Skip to content
Merged
Changes from 1 commit
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
7c0c71f
Add Pinvoke support on coreclr (#6542)
KevinRansom Apr 16, 2019
af5b4eb
Permit reduction of `Some` allocations for optional arguments (#6533)
dsyme Apr 16, 2019
0d18903
ensure all setup packages use the same version (#6556)
brettfo Apr 16, 2019
ed387e0
Will's fix (#6559)
KevinRansom Apr 16, 2019
7fa61b7
[master] Update dependencies from dotnet/arcade (#6510)
dotnet-maestro[bot] Apr 17, 2019
e130d25
fix vsix dependency version calculations (#6565)
brettfo Apr 17, 2019
290fd3c
Update dependencies from https://github.com/dotnet/arcade build 20190…
dotnet-maestro[bot] Apr 17, 2019
983e162
Update dependencies from https://github.com/dotnet/arcade build 20190…
dotnet-maestro[bot] Apr 18, 2019
b818aa0
Fixed benchmark solution and added project type check test (#6566)
TIHan Apr 18, 2019
95f733d
cleanup fcs props (#6538)
dsyme Apr 18, 2019
0fadd9e
rearrange order of SWR files to fix dependencies (#6582)
brettfo Apr 19, 2019
c4c1d9c
combine swr files (#6587)
brettfo Apr 19, 2019
f444e58
Uniform TryGetValue usage (#6598)
ncave Apr 22, 2019
816efbd
Moretesting (#6602)
KevinRansom Apr 22, 2019
028e1df
Pinvoke testing (#6594)
KevinRansom Apr 22, 2019
4ab75a7
Fix debugging of code using Anonymous records (#6608)
dsyme Apr 22, 2019
22fc113
Revert "Pinvoke testing (#6594)"
KevinRansom Apr 22, 2019
d58159c
Add use refassemblies switch to fsi (#6585)
KevinRansom Apr 23, 2019
028d118
Add tests for ref sorting (#6615)
KevinRansom Apr 23, 2019
b3df14c
Fix for anonymous record execution order (#6606)
dsyme Apr 23, 2019
f996ac5
wonder if this is why I'm seeing "evaluating local variables..." in V…
smoothdeveloper Apr 24, 2019
f52f4b5
add deterministic to msbuild targets (#6363)
ctaggart Apr 24, 2019
ae595d4
first pass at fixing anonymous fields in ConstraintSolver's exception…
smoothdeveloper Apr 24, 2019
3c77bae
Add support for --pathmap (#6609)
saul Apr 24, 2019
4841e2d
fix anon recd creation bug (#6434) (#6619)
dsyme Apr 24, 2019
9e835d3
re-enable code (#6620)
dsyme Apr 24, 2019
8bada64
fix 6586 (#6621)
dsyme Apr 24, 2019
b633bd9
Spell .NET correctly
KevinRansom Apr 24, 2019
ba50826
Update devguide to remove redundant components (#6630)
cartermp Apr 24, 2019
c07e18b
Spell .NET correctly (#6631)
cartermp Apr 24, 2019
0aacd63
Re-enable tests fixed by: #6620 (#6624)
KevinRansom Apr 24, 2019
fdc898c
Enable pinvoke tests for coreclr (#6617)
KevinRansom Apr 24, 2019
454764b
Add VSConfig file (#6622)
cartermp Apr 24, 2019
70e1130
comment state machine compilation (#6626)
dsyme Apr 26, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Will's fix (#6559)
  • Loading branch information
KevinRansom authored and brettfo committed Apr 16, 2019
commit ed387e0bc9dbf91cb0a189e2a803b4d52f6924e7
115 changes: 60 additions & 55 deletions tests/fsharp/Compiler/CompilerAssert.fs
Original file line number Diff line number Diff line change
Expand Up @@ -47,68 +47,73 @@ module CompilerAssert =
ExtraProjectInfo = None
Stamp = None
}

let lockObj = obj ()

let Pass (source: string) =
let parseResults, fileAnswer = checker.ParseAndCheckFileInProject("test.fs", 0, SourceText.ofString source, defaultProjectOptions) |> Async.RunSynchronously
lock lockObj <| fun () ->
let parseResults, fileAnswer = checker.ParseAndCheckFileInProject("test.fs", 0, SourceText.ofString source, defaultProjectOptions) |> Async.RunSynchronously

Assert.True(parseResults.Errors.Length = 0, sprintf "Parse errors: %A" parseResults.Errors)
Assert.True(parseResults.Errors.Length = 0, sprintf "Parse errors: %A" parseResults.Errors)

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

Assert.True(typeCheckResults.Errors.Length = 0, sprintf "Type Check errors: %A" typeCheckResults.Errors)
Assert.True(typeCheckResults.Errors.Length = 0, sprintf "Type Check errors: %A" typeCheckResults.Errors)

let TypeCheckSingleError (source: string) (expectedErrorNumber: int) (expectedErrorRange: int * int * int * int) (expectedErrorMsg: string) =
let parseResults, fileAnswer = checker.ParseAndCheckFileInProject("test.fs", 0, SourceText.ofString source, defaultProjectOptions) |> Async.RunSynchronously

Assert.True(parseResults.Errors.Length = 0, sprintf "Parse errors: %A" parseResults.Errors)

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

Assert.True(typeCheckResults.Errors.Length = 1, sprintf "Expected one type check error: %A" typeCheckResults.Errors)
typeCheckResults.Errors
|> Array.iter (fun info ->
Assert.AreEqual(FSharpErrorSeverity.Error, info.Severity)
Assert.AreEqual(expectedErrorNumber, info.ErrorNumber, "expectedErrorNumber")
Assert.AreEqual(expectedErrorRange, (info.StartLineAlternate, info.StartColumn, info.EndLineAlternate, info.EndColumn), "expectedErrorRange")
Assert.AreEqual(expectedErrorMsg, info.Message, "expectedErrorMsg")
)
lock lockObj <| fun () ->
let parseResults, fileAnswer = checker.ParseAndCheckFileInProject("test.fs", 0, SourceText.ofString source, defaultProjectOptions) |> Async.RunSynchronously

Assert.True(parseResults.Errors.Length = 0, sprintf "Parse errors: %A" parseResults.Errors)

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

Assert.True(typeCheckResults.Errors.Length = 1, sprintf "Expected one type check error: %A" typeCheckResults.Errors)
typeCheckResults.Errors
|> Array.iter (fun info ->
Assert.AreEqual(FSharpErrorSeverity.Error, info.Severity)
Assert.AreEqual(expectedErrorNumber, info.ErrorNumber, "expectedErrorNumber")
Assert.AreEqual(expectedErrorRange, (info.StartLineAlternate, info.StartColumn, info.EndLineAlternate, info.EndColumn), "expectedErrorRange")
Assert.AreEqual(expectedErrorMsg, info.Message, "expectedErrorMsg")
)

let RunScript (source: string) (expectedErrorMessages: string list) =
// Intialize output and input streams
use inStream = new StringReader("")
use outStream = new StringWriter()
use errStream = new StringWriter()

// Build command line arguments & start FSI session
let argv = [| "C:\\fsi.exe" |]
#if !NETCOREAPP
let allArgs = Array.append argv [|"--noninteractive"|]
#else
let allArgs = Array.append argv [|"--noninteractive"; "--targetprofile:netcore"|]
#endif

let fsiConfig = FsiEvaluationSession.GetDefaultConfiguration()
use fsiSession = FsiEvaluationSession.Create(fsiConfig, allArgs, inStream, outStream, errStream, collectible = true)

let ch, errors = fsiSession.EvalInteractionNonThrowing source

let errorMessages = ResizeArray()
errors
|> Seq.iter (fun error -> errorMessages.Add(error.Message))

match ch with
| Choice2Of2 ex -> errorMessages.Add(ex.Message)
| _ -> ()

if expectedErrorMessages.Length <> errorMessages.Count then
Assert.Fail(sprintf "Expected error messages: %A \n\n Actual error messages: %A" expectedErrorMessages errorMessages)
else
(expectedErrorMessages, errorMessages)
||> Seq.iter2 (fun expectedErrorMessage errorMessage ->
Assert.AreEqual(expectedErrorMessage, errorMessage)
)
lock lockObj <| fun () ->
// Intialize output and input streams
use inStream = new StringReader("")
use outStream = new StringWriter()
use errStream = new StringWriter()

// Build command line arguments & start FSI session
let argv = [| "C:\\fsi.exe" |]
#if !NETCOREAPP
let allArgs = Array.append argv [|"--noninteractive"|]
#else
let allArgs = Array.append argv [|"--noninteractive"; "--targetprofile:netcore"|]
#endif

let fsiConfig = FsiEvaluationSession.GetDefaultConfiguration()
use fsiSession = FsiEvaluationSession.Create(fsiConfig, allArgs, inStream, outStream, errStream, collectible = true)

let ch, errors = fsiSession.EvalInteractionNonThrowing source

let errorMessages = ResizeArray()
errors
|> Seq.iter (fun error -> errorMessages.Add(error.Message))

match ch with
| Choice2Of2 ex -> errorMessages.Add(ex.Message)
| _ -> ()

if expectedErrorMessages.Length <> errorMessages.Count then
Assert.Fail(sprintf "Expected error messages: %A \n\n Actual error messages: %A" expectedErrorMessages errorMessages)
else
(expectedErrorMessages, errorMessages)
||> Seq.iter2 (fun expectedErrorMessage errorMessage ->
Assert.AreEqual(expectedErrorMessage, errorMessage)
)