Skip to content

Commit 86cb6a4

Browse files
Add test and go back to first fix
1 parent 8a57cd7 commit 86cb6a4

File tree

8 files changed

+255
-274
lines changed

8 files changed

+255
-274
lines changed

src/fsharp/CompileOps.fs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5005,7 +5005,8 @@ module private ScriptPreprocessClosure =
50055005
[ClosedSourceFile(filename,m,None,[],[],[])] // Don't traverse into .fs leafs.
50065006

50075007
let loadedSources = (!tcConfig).GetAvailableLoadedSources() |> List.rev |> List.map AddFileIfNotSeen |> List.concat
5008-
ClosedSourceFile(filename,m,Some(input),!errors,!warnings,!noWarns) :: loadedSources |> List.map FindClosure |> List.concat // Final closure is in reverse order. Keep the closed source at the top.
5008+
(loadedSources |> List.map FindClosure |> List.concat)
5009+
@ [ClosedSourceFile(filename,m,Some(input),!errors,!warnings,!noWarns)]
50095010
| None -> [ClosedSourceFile(filename,m,None,!errors,!warnings,[])]
50105011

50115012
closureDirectives |> List.map FindClosure |> List.concat, !tcConfig
@@ -5067,7 +5068,7 @@ module private ScriptPreprocessClosure =
50675068
let rootWarnings = rootWarnings |> List.filter isRootRange
50685069

50695070
let result : LoadClosure =
5070-
{ SourceFiles = List.groupByFirst !sourceFiles
5071+
{ SourceFiles = List.groupByFirst !sourceFiles |> List.rev
50715072
References = List.groupByFirst references
50725073
UnresolvedReferences = unresolvedReferences
50735074
Inputs = !sourceInputs

src/fsharp/FSharp.Compiler.Service/FSharp.Compiler.Service.fsproj

Lines changed: 229 additions & 271 deletions
Large diffs are not rendered by default.

src/fsharp/vs/service.fs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2546,7 +2546,7 @@ type BackgroundCompiler(projectCacheSize, keepAssemblyContents, keepAllBackgroun
25462546
let co =
25472547
{
25482548
ProjectFileName = filename + ".fsproj" // Make a name that is unique in this directory.
2549-
ProjectFileNames = fas.Inputs |> List.map fst |> List.toArray
2549+
ProjectFileNames = fas.SourceFiles |> List.map fst |> List.toArray
25502550
OtherOptions = otherFlags
25512551
ReferencedProjects= [| |]
25522552
IsIncompleteTypeCheckEnvironment = false

tests/service/ProjectOptionsTests.fs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -418,6 +418,17 @@ let ``Project file parsing -- report files``() =
418418
for f in Directory.EnumerateFiles(@"C:\Program Files (x86)\Microsoft SDKs\F#\4.0\","*",SearchOption.AllDirectories) do
419419
printfn "File: %s" f
420420

421+
[<Test>]
422+
let ``Test ProjectFileNames order for GetProjectOptionsFromScript`` () = // See #594
423+
let scriptPath = __SOURCE_DIRECTORY__ + @"/data/ScriptProject/Main.fsx"
424+
let scriptSource = File.ReadAllText scriptPath
425+
let projOpts =
426+
checker.GetProjectOptionsFromScript(scriptPath, scriptSource)
427+
|> Async.RunSynchronously
428+
projOpts.ProjectFileNames
429+
|> Array.map Path.GetFileNameWithoutExtension
430+
|> (=) [|"BaseLib"; "Lib1"; "Lib2"; "Main"|]
431+
|> shouldEqual true
421432

422433
#endif
423434

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
module BaseLib
2+
3+
let add2 x = x + 2
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
#load "BaseLib.fs"
2+
let add3 = BaseLib.add2 >> ((+) 1)
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
#load "BaseLib.fs"
2+
let add4 = BaseLib.add2 >> ((+) 2)
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
#load "Lib1.fsx"
2+
#load "Lib2.fsx"
3+
Lib1.add3 5 |> printfn "%i"
4+
Lib2.add4 5 |> printfn "%i"

0 commit comments

Comments
 (0)