Skip to content

Commit fe0426a

Browse files
authored
Merge pull request #7197 from dotnet/merges/master-to-release/dev16.3
Merge master to release/dev16.3
2 parents 7d5f12d + 598db3e commit fe0426a

3 files changed

Lines changed: 37 additions & 10 deletions

File tree

NuGet.config

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,20 @@
88
<clear />
99
<add key="dotnet-core" value="https://dotnetfeed.blob.core.windows.net/dotnet-core/index.json" />
1010
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" />
11+
<add key="fsharp-daily" value="https://www.myget.org/F/fsharp-daily/api/v3/index.json" />
12+
<add key="roslyn-master-nightly" value="https://dotnet.myget.org/F/roslyn-master-nightly/api/v3/index.json" />
13+
<add key="myget-dotnet-core" value="https://dotnet.myget.org/F/dotnet-core/api/v3/index.json" />
14+
<add key="dotnet-buildtools" value="https://dotnet.myget.org/F/dotnet-buildtools/api/v3/index.json" />
15+
<add key="roslyn-tools" value="https://dotnet.myget.org/F/roslyn-tools/api/v3/index.json" />
16+
<add key="roslyn" value="https://dotnet.myget.org/F/roslyn/api/v3/index.json" />
17+
<add key="symreader-converter" value="https://dotnet.myget.org/F/symreader-converter/api/v3/index.json" />
18+
<add key="interactive-window" value="https://dotnet.myget.org/F/interactive-window/api/v3/index.json" />
19+
<add key="vs-devcore" value="https://myget.org/F/vs-devcore/api/v3/index.json" />
20+
<add key="vs-editor" value="https://myget.org/F/vs-editor/api/v3/index.json" />
21+
<add key="vssdk" value="https://vside.myget.org/F/vssdk/api/v3/index.json" />
22+
<add key="vs-impl" value="https://vside.myget.org/F/vs-impl/api/v3/index.json" />
23+
<add key="roslyn_concord" value="https://myget.org/F/roslyn_concord/api/v3/index.json" />
24+
<add key="devcore" value="https://vside.myget.org/F/devcore/api/v3/index.json" />
1125
</packageSources>
1226
<disabledPackageSources>
1327
<clear />

tests/fsharp/Compiler/CompilerAssert.fs

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,8 @@ module CompilerAssert =
111111
Assert.IsEmpty(typeCheckResults.Errors, sprintf "Type Check errors: %A" typeCheckResults.Errors)
112112

113113

114-
let TypeCheckSingleError (source: string) (expectedErrorNumber: int) (expectedErrorRange: int * int * int * int) (expectedErrorMsg: string) =
114+
115+
let TypeCheckWithErrors (source: string) expectedTypeErrors =
115116
lock gate <| fun () ->
116117
let parseResults, fileAnswer = checker.ParseAndCheckFileInProject("test.fs", 0, SourceText.ofString source, defaultProjectOptions) |> Async.RunSynchronously
117118

@@ -121,15 +122,24 @@ module CompilerAssert =
121122
| FSharpCheckFileAnswer.Aborted _ -> Assert.Fail("Type Checker Aborted")
122123
| FSharpCheckFileAnswer.Succeeded(typeCheckResults) ->
123124

124-
Assert.AreEqual(1, typeCheckResults.Errors.Length, sprintf "Expected one type check error: %A" typeCheckResults.Errors)
125-
typeCheckResults.Errors
126-
|> Array.iter (fun info ->
127-
Assert.AreEqual(FSharpErrorSeverity.Error, info.Severity)
125+
let errors =
126+
typeCheckResults.Errors
127+
|> Array.distinctBy (fun e -> e.Severity, e.ErrorNumber, e.StartLineAlternate, e.StartColumn, e.EndLineAlternate, e.EndColumn, e.Message)
128+
129+
Assert.AreEqual(Array.length expectedTypeErrors, errors.Length, sprintf "Type check errors: %A" typeCheckResults.Errors)
130+
131+
Array.zip errors expectedTypeErrors
132+
|> Array.iter (fun (info, expectedError) ->
133+
let (expectedServerity: FSharpErrorSeverity, expectedErrorNumber: int, expectedErrorRange: int * int * int * int, expectedErrorMsg: string) = expectedError
134+
Assert.AreEqual(expectedServerity, info.Severity)
128135
Assert.AreEqual(expectedErrorNumber, info.ErrorNumber, "expectedErrorNumber")
129-
Assert.AreEqual(expectedErrorRange, (info.StartLineAlternate, info.StartColumn, info.EndLineAlternate, info.EndColumn), "expectedErrorRange")
136+
Assert.AreEqual(expectedErrorRange, (info.StartLineAlternate, info.StartColumn + 1, info.EndLineAlternate, info.EndColumn + 1), "expectedErrorRange")
130137
Assert.AreEqual(expectedErrorMsg, info.Message, "expectedErrorMsg")
131138
)
132139

140+
let TypeCheckSingleError (source: string) (expectedServerity: FSharpErrorSeverity) (expectedErrorNumber: int) (expectedErrorRange: int * int * int * int) (expectedErrorMsg: string) =
141+
TypeCheckWithErrors (source: string) [| expectedServerity, expectedErrorNumber, expectedErrorRange, expectedErrorMsg |]
142+
133143
let CompileExe (source: string) =
134144
compile true source (fun (errors, _) ->
135145
if errors.Length > 0 then
@@ -203,4 +213,4 @@ module CompilerAssert =
203213
||> Seq.iter2 (fun expectedErrorMessage errorMessage ->
204214
Assert.AreEqual(expectedErrorMessage, errorMessage)
205215
)
206-
216+

tests/fsharp/Compiler/Language/AnonRecordTests.fs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
namespace FSharp.Compiler.UnitTests
44

55
open NUnit.Framework
6+
open FSharp.Compiler.SourceCodeServices
67

78
[<TestFixture>]
89
module AnonRecordsTests =
@@ -30,8 +31,9 @@ let sAnon = StructClass<struct {| S: int |}>()
3031
type RefClass<'a when 'a : not struct>() = class end
3132
let rAnon = RefClass<struct {| R: int |}>()
3233
"""
34+
FSharpErrorSeverity.Error
3335
1
34-
(3, 12, 3, 41)
36+
(3, 13, 3, 42)
3537
"A generic construct requires that the type 'struct {|R : int|}' have reference semantics, but it does not, i.e. it is a struct"
3638

3739
[<Test>]
@@ -40,7 +42,8 @@ let rAnon = RefClass<struct {| R: int |}>()
4042
"""
4143
type StructClass<'a when 'a : struct>() = class end
4244
let sAnon = StructClass<{| S: int |}>()
43-
"""
45+
"""
46+
FSharpErrorSeverity.Error
4447
1
45-
(3, 12, 3, 37)
48+
(3, 13, 3, 38)
4649
"A generic construct requires that the type '{|S : int|}' is a CLI or F# struct type"

0 commit comments

Comments
 (0)