forked from ionide/FsAutoComplete
-
Notifications
You must be signed in to change notification settings - Fork 0
/
fcs39-validate.fsx
55 lines (55 loc) · 1.71 KB
/
fcs39-validate.fsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#r "nuget: FSharp.Compiler.Service, 39.0.0"
open FSharp.Compiler.SourceCodeServices
open FSharp.Compiler.Text
open System.IO
let fcsVersion =
System
.Reflection
.Assembly
.GetAssembly(
typeof<FSharpChecker>
)
.GetName()
.Version
printfn "%A" fcsVersion
let checker = FSharpChecker.Create()
let sourceText path =
let contents = File.ReadAllText(path)
SourceText.ofString contents
let getNetCoreScriptOptions (path: string) =
checker.GetProjectOptionsFromScript(
path,
sourceText path,
assumeDotNetFramework = false,
useSdkRefs = true,
useFsiAuxLib = true,
sdkDirOverride = @"C:\Program Files\dotnet\sdk\5.0.402\",
otherFlags = [| "--targetprofile:netstandard" |]
)
|> Async.RunSynchronously
let parseAndCheckFile (path, options) =
let p, c =
checker.ParseAndCheckFileInProject(path, 0, sourceText path, options)
|> Async.RunSynchronously
match c with
| FSharpCheckFileAnswer.Aborted -> p, None
| FSharpCheckFileAnswer.Succeeded c -> p, Some c
let scriptRoot =
@"..\test\FsAutoComplete.Tests.Lsp\TestCases"
let testGroup = "CompletionAutoOpenTests"
let testCase = "ModuleDocsAndNewLineBeforeOpen.fsx"
let fullPath =
Path.Combine(scriptRoot, testGroup, testCase) |> Path.GetFullPath
let projectOpts, projectOptsErrors = getNetCoreScriptOptions fullPath
let parseResult, checkResult =
parseAndCheckFile (fullPath, projectOpts)
let pErrors =
parseResult.Errors
let cErrors =
checkResult.Value.Errors
for f in projectOpts.SourceFiles do
printfn "File: %s" f
for opt in projectOpts.OtherOptions do
printfn "Opt: %s" opt
printfn "%A" pErrors
printfn "%A" cErrors