diff options
Diffstat (limited to 'compiler/modules.nim')
-rw-r--r-- | compiler/modules.nim | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/compiler/modules.nim b/compiler/modules.nim index 87a6bc507..748b74953 100644 --- a/compiler/modules.nim +++ b/compiler/modules.nim @@ -82,6 +82,13 @@ proc compileModule*(graph: ModuleGraph; fileIdx: FileIndex; flags: TSymFlags): P var flags = flags if fileIdx == graph.config.projectMainIdx2: flags.incl sfMainModule result = graph.getModule(fileIdx) + + template processModuleAux = + var s: PLLStream + if sfMainModule in flags: + if graph.config.projectIsStdin: s = stdin.llStreamOpen + elif graph.config.projectIsCmd: s = llStreamOpen(graph.config.cmdInput) + discard processModule(graph, result, idGeneratorFromModule(result), s) if result == nil: let filename = AbsoluteFile toFullPath(graph.config, fileIdx) result = loadModuleSym(graph, fileIdx, filename) @@ -91,15 +98,13 @@ proc compileModule*(graph: ModuleGraph; fileIdx: FileIndex; flags: TSymFlags): P registerModule(graph, result) else: partialInitModule(result, graph, fileIdx, filename) - discard processModule(graph, result, idGeneratorFromModule(result), - if sfMainModule in flags and graph.config.projectIsStdin: stdin.llStreamOpen else: nil) + processModuleAux() elif graph.isDirty(result): result.flags.excl sfDirty # reset module fields: initStrTable(result.tab) result.ast = nil - discard processModule(graph, result, idGeneratorFromModule(result), - if sfMainModule in flags and graph.config.projectIsStdin: stdin.llStreamOpen else: nil) + processModuleAux() graph.markClientsDirty(fileIdx) proc importModule*(graph: ModuleGraph; s: PSym, fileIdx: FileIndex): PSym = |