Skip to content

Commit d1b64e6

Browse files
authored
Merge pull request #7126 from dotnet/merges/master-to-release/dev16.3
Merge master to release/dev16.3
2 parents d51ae07 + 274ffb1 commit d1b64e6

8 files changed

Lines changed: 29 additions & 12 deletions

File tree

eng/Version.Details.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@
33
<ProductDependencies>
44
</ProductDependencies>
55
<ToolsetDependencies>
6-
<Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="1.0.0-beta.19351.4">
6+
<Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="1.0.0-beta.19352.7">
77
<Uri>https://github.com/dotnet/arcade</Uri>
8-
<Sha>1fb1e240c889cd7f6e10cb1eacd129efa3ddb4b4</Sha>
8+
<Sha>b8c190d95371e658d95a5731f4778bd3da2fa42d</Sha>
99
</Dependency>
1010
</ToolsetDependencies>
1111
</Dependencies>

fcs/download-paket.ps1

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
$paketurl="https://github.com/fsprojects/Paket/releases/download/5.210.1/paket.exe"
1+
$paketurl="https://github.com/fsprojects/Paket/releases/download/5.215.0/paket.exe"
22
$paketdir = Join-Path $PSScriptRoot ".paket"
33
$paketpath = Join-Path $paketdir "paket.exe"
44

fcs/download-paket.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ while [[ -h "$source" ]]; do
1212
done
1313
scriptroot="$( cd -P "$( dirname "$source" )" && pwd )"
1414

15-
paketurl=https://github.com/fsprojects/Paket/releases/download/5.210.1/paket.exe
15+
paketurl=https://github.com/fsprojects/Paket/releases/download/5.215.0/paket.exe
1616
paketdir=$scriptroot/.paket
1717
paketpath=$paketdir/paket.exe
1818
if [ ! -e "$paketpath" ]; then

global.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
}
1111
},
1212
"msbuild-sdks": {
13-
"Microsoft.DotNet.Arcade.Sdk": "1.0.0-beta.19351.4",
13+
"Microsoft.DotNet.Arcade.Sdk": "1.0.0-beta.19352.7",
1414
"Microsoft.DotNet.Helix.Sdk": "2.0.0-beta.19069.2"
1515
}
1616
}

src/fsharp/service/Reactor.fs

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ type Reactor() =
3535

3636
// We need to store the culture for the VS thread that is executing now,
3737
// so that when the reactor picks up a thread from the threadpool we can set the culture
38-
let culture = new CultureInfo(CultureInfo.CurrentUICulture.Name)
38+
let mutable culture = CultureInfo(CultureInfo.CurrentUICulture.Name)
3939

4040
let mutable bgOpCts = new CancellationTokenSource()
4141
/// Mailbox dispatch function.
@@ -135,6 +135,17 @@ type Reactor() =
135135
Debug.Assert(false, String.Format("unexpected failure in reactor loop {0}, restarting", e))
136136
}
137137

138+
member __.SetPreferredUILang(preferredUiLang: string option) =
139+
match preferredUiLang with
140+
| Some s ->
141+
culture <- CultureInfo s
142+
#if FX_RESHAPED_GLOBALIZATION
143+
CultureInfo.CurrentUICulture <- culture
144+
#else
145+
Thread.CurrentThread.CurrentUICulture <- culture
146+
#endif
147+
| None -> ()
148+
138149
// [Foreground Mailbox Accessors] -----------------------------------------------------------
139150
member r.SetBackgroundOp(bgOpOpt) =
140151
Trace.TraceInformation("Reactor: {0:n3} enqueue start background, length {1}", DateTime.Now.TimeOfDay.TotalSeconds, builder.CurrentQueueLength)

src/fsharp/service/Reactor.fsi

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,9 @@ type internal IReactorOperations =
2323
[<Sealed>]
2424
type internal Reactor =
2525

26+
/// Allows to specify the language for error messages
27+
member SetPreferredUILang : string option -> unit
28+
2629
/// Set the background building function, which is called repeatedly
2730
/// until it returns 'false'. If None then no background operation is used.
2831
member SetBackgroundOp : ( (* userOpName:*) string * (* opName: *) string * (* opArg: *) string * (CompilationThreadToken -> CancellationToken -> bool)) option -> unit

src/fsharp/service/service.fs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -518,6 +518,7 @@ type BackgroundCompiler(legacyReferenceResolver, projectCacheSize, keepAssemblyC
518518
keepAssemblyContents,
519519
suggestNamesForErrors)
520520
let parsingOptions = FSharpParsingOptions.FromTcConfig(tcPrior.TcConfig, Array.ofList builder.SourceFiles, options.UseScriptResolutionRules)
521+
reactor.SetPreferredUILang tcPrior.TcConfig.preferredUiLang
521522
bc.RecordTypeCheckFileInProjectResults(fileName, options, parsingOptions, parseResults, fileVersion, tcPrior.TimeStamp, Some checkAnswer, sourceText.GetHashCode())
522523
return checkAnswer
523524
finally
@@ -635,6 +636,7 @@ type BackgroundCompiler(legacyReferenceResolver, projectCacheSize, keepAssemblyC
635636

636637
// Do the parsing.
637638
let parsingOptions = FSharpParsingOptions.FromTcConfig(builder.TcConfig, Array.ofList (builder.SourceFiles), options.UseScriptResolutionRules)
639+
reactor.SetPreferredUILang tcPrior.TcConfig.preferredUiLang
638640
let parseErrors, parseTreeOpt, anyErrors = ParseAndCheckFile.parseFile (sourceText, filename, parsingOptions, userOpName, suggestNamesForErrors)
639641
let parseResults = FSharpParseFileResults(parseErrors, parseTreeOpt, anyErrors, builder.AllDependenciesDeprecated)
640642
let! checkResults = bc.CheckOneFileImpl(parseResults, sourceText, filename, options, textSnapshotInfo, fileVersion, builder, tcPrior, creationErrors, userOpName)

tests/fsharp/Compiler/CompilerAssert.fs

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ module CompilerAssert =
2525
ProjectId = None
2626
SourceFiles = [|"test.fs"|]
2727
#if !NETCOREAPP
28-
OtherOptions = [||]
28+
OtherOptions = [|"--preferreduilang:en-US";|]
2929
#else
3030
OtherOptions =
3131
// Hack: Currently a hack to get the runtime assemblies for netcore in order to compile.
@@ -36,7 +36,7 @@ module CompilerAssert =
3636
|> Seq.toArray
3737
|> Array.filter (fun x -> x.ToLowerInvariant().Contains("system."))
3838
|> Array.map (fun x -> sprintf "-r:%s" x)
39-
Array.append [|"--targetprofile:netcore"; "--noframework"|] assemblies
39+
Array.append [|"--preferreduilang:en-US"; "--targetprofile:netcore"; "--noframework"|] assemblies
4040
#endif
4141
ReferencedProjects = [||]
4242
IsIncompleteTypeCheckEnvironment = false
@@ -54,25 +54,26 @@ module CompilerAssert =
5454
lock lockObj <| fun () ->
5555
let parseResults, fileAnswer = checker.ParseAndCheckFileInProject("test.fs", 0, SourceText.ofString source, defaultProjectOptions) |> Async.RunSynchronously
5656

57-
Assert.True(parseResults.Errors.Length = 0, sprintf "Parse errors: %A" parseResults.Errors)
57+
Assert.IsEmpty(parseResults.Errors, sprintf "Parse errors: %A" parseResults.Errors)
5858

5959
match fileAnswer with
6060
| FSharpCheckFileAnswer.Aborted _ -> Assert.Fail("Type Checker Aborted")
6161
| FSharpCheckFileAnswer.Succeeded(typeCheckResults) ->
6262

63-
Assert.True(typeCheckResults.Errors.Length = 0, sprintf "Type Check errors: %A" typeCheckResults.Errors)
63+
Assert.IsEmpty(typeCheckResults.Errors, sprintf "Type Check errors: %A" typeCheckResults.Errors)
64+
6465

6566
let TypeCheckSingleError (source: string) (expectedErrorNumber: int) (expectedErrorRange: int * int * int * int) (expectedErrorMsg: string) =
6667
lock lockObj <| fun () ->
6768
let parseResults, fileAnswer = checker.ParseAndCheckFileInProject("test.fs", 0, SourceText.ofString source, defaultProjectOptions) |> Async.RunSynchronously
6869

69-
Assert.True(parseResults.Errors.Length = 0, sprintf "Parse errors: %A" parseResults.Errors)
70+
Assert.IsEmpty(parseResults.Errors, sprintf "Parse errors: %A" parseResults.Errors)
7071

7172
match fileAnswer with
7273
| FSharpCheckFileAnswer.Aborted _ -> Assert.Fail("Type Checker Aborted")
7374
| FSharpCheckFileAnswer.Succeeded(typeCheckResults) ->
7475

75-
Assert.True(typeCheckResults.Errors.Length = 1, sprintf "Expected one type check error: %A" typeCheckResults.Errors)
76+
Assert.AreEqual(1, typeCheckResults.Errors.Length, sprintf "Expected one type check error: %A" typeCheckResults.Errors)
7677
typeCheckResults.Errors
7778
|> Array.iter (fun info ->
7879
Assert.AreEqual(FSharpErrorSeverity.Error, info.Severity)

0 commit comments

Comments
 (0)