Skip to content

Commit d2e9316

Browse files
committed
fix load closure
1 parent 1410e5b commit d2e9316

File tree

2 files changed

+18
-3
lines changed

2 files changed

+18
-3
lines changed

src/fsharp/vs/service.fs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3007,7 +3007,7 @@ type FsiInteractiveChecker(referenceResolver, reactorOps: IReactorOperations, tc
30073007

30083008
member __.ParseAndCheckInteraction (source) =
30093009

3010-
let mainInputFileName = "stdin.fsx"
3010+
let mainInputFileName = Path.Combine(tcConfig.implicitIncludeDir, "stdin.fsx")
30113011
// Note: projectSourceFiles is only used to compute isLastCompiland, and is ignored if Build.IsScript(mainInputFileName) is true (which it is in this case).
30123012
let projectSourceFiles = [ ]
30133013
let parseErrors, _matchPairs, inputOpt, anyErrors = Parser.ParseOneFile (source, false, true, mainInputFileName, projectSourceFiles, tcConfig)
@@ -3018,7 +3018,7 @@ type FsiInteractiveChecker(referenceResolver, reactorOps: IReactorOperations, tc
30183018
let fsiCompilerOptions = CompileOptions.GetCoreFsiCompilerOptions tcConfigB
30193019
CompileOptions.ParseCompilerOptions (ignore, fsiCompilerOptions, [ ])
30203020

3021-
let loadClosure = LoadClosure.ComputeClosureOfSourceText(referenceResolver,mainInputFileName, source, CodeContext.Editing, tcConfig.useSimpleResolution, tcConfig.useFsiAuxLib, new Lexhelp.LexResourceManager(), applyCompilerOptions)
3021+
let loadClosure = LoadClosure.ComputeClosureOfSourceText(referenceResolver, mainInputFileName, source, CodeContext.Editing, tcConfig.useSimpleResolution, tcConfig.useFsiAuxLib, new Lexhelp.LexResourceManager(), applyCompilerOptions)
30223022
let backgroundErrors = []
30233023
let tcErrors, tcFileResult =
30243024
Parser.TypeCheckOneFile(parseResults,source,mainInputFileName,"project",tcConfig,tcGlobals,tcImports, tcState,

tests/service/FsiTests.fs

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -215,7 +215,7 @@ let ``ParseAndCheckInteraction test 1``() =
215215
fsiSession.EvalInteraction """ let xxxxxx = 1 """
216216
fsiSession.EvalInteraction """ type CCCC() = member x.MMMMM() = 1 + 1 """
217217
let untypedResults, typedResults, _ = fsiSession.ParseAndCheckInteraction("xxxxxx")
218-
untypedResults.FileName |> shouldEqual "stdin.fsx"
218+
Path.GetFileName(untypedResults.FileName) |> shouldEqual "stdin.fsx"
219219
untypedResults.Errors.Length |> shouldEqual 0
220220
untypedResults.ParseHadErrors |> shouldEqual false
221221

@@ -232,6 +232,21 @@ let ``ParseAndCheckInteraction test 1``() =
232232

233233
Assert.True(tooltip.Contains("val xxxxxx : int"))
234234

235+
[<Test>]
236+
let ``ParseAndCheckInteraction test 2``() =
237+
let fileName1 = Path.Combine(Path.Combine(__SOURCE_DIRECTORY__, "data"), "testscript.fsx")
238+
File.WriteAllText(fileName1, "let x = 1")
239+
let interaction1 =
240+
sprintf """
241+
#load @"%s"
242+
let y = Testscript.x + 1
243+
""" fileName1
244+
let untypedResults, typedResults, _ = fsiSession.ParseAndCheckInteraction interaction1
245+
Path.GetFileName(untypedResults.FileName) |> shouldEqual "stdin.fsx"
246+
untypedResults.Errors.Length |> shouldEqual 0
247+
untypedResults.ParseHadErrors |> shouldEqual false
248+
249+
235250
[<Test>]
236251
let ``Bad arguments to session creation 1``() =
237252
let inStream = new StringReader("")

0 commit comments

Comments
 (0)