Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
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
8 changes: 4 additions & 4 deletions src/fsharp/CompileOps.fs
Original file line numberDiff line numberDiff line change
Expand Up@@ -5009,8 +5009,8 @@ module private ScriptPreprocessClosure =
| _ -> closureFiles

// Get all source files.
let sourceFiles = [ for (ClosureFile(filename,m,_,_,_,_)) in closureFiles -> (filename,m) ]
let sourceInputs = [ for (ClosureFile(filename,_,input,parseDiagnostics,metaDiagnostics,_nowarns)) in closureFiles -> ({ FileName=filename; SyntaxTree=input; ParseDiagnostics=parseDiagnostics; MetaCommandDiagnostics=metaDiagnostics }: LoadClosureInput) ]
let sourceFiles = [ for (ClosureFile(filename,m,_,_,_,_)) in closureFiles -> (filename,m) ]
let sourceInputs = [ for (ClosureFile(filename,_,input,parseDiagnostics,metaDiagnostics,_nowarns)) in closureFiles -> ({ FileName=filename; SyntaxTree=input; ParseDiagnostics=parseDiagnostics; MetaCommandDiagnostics=metaDiagnostics }: LoadClosureInput) ]
let globalNoWarns = closureFiles |> List.collect (fun (ClosureFile(_,_,_,_,_,noWarns)) -> noWarns)

// Resolve all references.
Expand DownExpand Up@@ -5276,13 +5276,13 @@ let TypeCheckOneInputEventually

// Check if we've already seen an implementation for this fragment
if Zset.contains qualNameOfFile rootImpls then
errorR(Error(FSComp.SR.buildImplementationAlreadyGiven(qualNameOfFile.Text),m))
errorR(Error(FSComp.SR.buildImplementationAlreadyGiven(qualNameOfFile.Text),m))

let tcImplEnv = tcState.tcsTcImplEnv

// Typecheck the implementation file
let! topAttrs, implFile, tcEnvAtEnd, createsGeneratedProvidedTypes =
TypeCheckOneImplFile (tcGlobals,tcState.tcsNiceNameGen,amap,tcState.tcsCcu,checkForErrors,tcConfig.conditionalCompilationDefines,tcSink) tcImplEnv rootSigOpt file
TypeCheckOneImplFile (tcGlobals,tcState.tcsNiceNameGen,amap,tcState.tcsCcu,checkForErrors,tcConfig.conditionalCompilationDefines,tcSink) tcImplEnv rootSigOpt file

let hadSig = Option.isSome rootSigOpt
let implFileSigType = SigTypeOfImplFile implFile
Expand Down
9 changes: 8 additions & 1 deletion src/fsharp/fsi/fsi.fs
Original file line numberDiff line numberDiff line change
Expand Up@@ -1294,6 +1294,7 @@ type internal FsiDynamicCompiler

member fsiDynamicCompiler.EvalSourceFiles(ctok, istate, m, sourceFiles, lexResourceManager, errorLogger: ErrorLogger) =
let tcConfig = TcConfig.Create(tcConfigB,validate=false)
let moduleNamesDict = Dictionary<string,Set<string>>()
match sourceFiles with
| [] -> istate
| _ ->
Expand DownExpand Up@@ -1328,10 +1329,16 @@ type internal FsiDynamicCompiler
input.FileName, parsedInput)
|> List.unzip

errorLogger.AbortOnError(fsiConsoleOutput);

errorLogger.AbortOnError(fsiConsoleOutput)
if inputs |> List.exists Option.isNone then failwith "parse error"
let inputs = List.map Option.get inputs
let istate = (istate, sourceFiles, inputs) |||> List.fold2 (fun istate sourceFile input -> fsiDynamicCompiler.ProcessMetaCommandsFromInputAsInteractiveCommands(ctok, istate, sourceFile, input))

let inputs =
inputs
|> List.map (DeduplicateParsedInputModuleName moduleNamesDict)

fsiDynamicCompiler.EvalParsedSourceFiles (ctok, errorLogger, istate, inputs)


Expand Down