diff options
author | Andreas Rumpf <rumpf_a@web.de> | 2016-08-29 15:45:27 +0200 |
---|---|---|
committer | Andreas Rumpf <rumpf_a@web.de> | 2016-08-29 15:47:38 +0200 |
commit | e92a7fd50841e91e538bd7c1e5c6efa85b54174c (patch) | |
tree | 5fee4a3ad0144cdd47a1df6c8935c0ae64afbbb5 | |
parent | 12cd8fe9e27256e2fb565ca3445ef94328339a6d (diff) | |
download | Nim-e92a7fd50841e91e538bd7c1e5c6efa85b54174c.tar.gz |
nimsuggest improvements
-rw-r--r-- | compiler/modules.nim | 7 | ||||
-rw-r--r-- | compiler/passes.nim | 13 | ||||
-rw-r--r-- | compiler/scriptconfig.nim | 2 |
3 files changed, 7 insertions, 15 deletions
diff --git a/compiler/modules.nim b/compiler/modules.nim index aa12325f4..711fb6aa4 100644 --- a/compiler/modules.nim +++ b/compiler/modules.nim @@ -186,14 +186,11 @@ proc compileModule*(fileIdx: int32, flags: TSymFlags): PSym = return else: result.id = getID() - if sfMainModule in flags and gProjectIsStdin: - processModule(result, llStreamOpen(stdin), rd) - else: - processModule(result, nil, rd) + let validFile = processModule(result, if sfMainModule in flags and gProjectIsStdin: llStreamOpen(stdin) else: nil, rd) if optCaasEnabled in gGlobalOptions: gMemCacheData[fileIdx].compiledAt = gLastCmdTime gMemCacheData[fileIdx].needsRecompile = Recompiled - doHash fileIdx + if validFile: doHash fileIdx else: if checkDepMem(fileIdx) == Yes: result = compileModule(fileIdx, flags) diff --git a/compiler/passes.nim b/compiler/passes.nim index ceb3e2b8a..b7642e3e4 100644 --- a/compiler/passes.nim +++ b/compiler/passes.nim @@ -46,12 +46,6 @@ proc makePass*(open: TPassOpen = nil, result.close = close result.process = process - # This implements a memory preserving scheme: Top level statements are - # processed in a pipeline. The compiler never looks at a whole module - # any longer. However, this is simple to change, as new passes may perform - # whole program optimizations. For now, we avoid it to save a lot of memory. -proc processModule*(module: PSym, stream: PLLStream, rd: PRodReader) - # the semantic checker needs these: var gImportModule*: proc (m: PSym, fileIdx: int32): PSym {.nimcall.} @@ -160,7 +154,8 @@ proc processImplicits(implicits: seq[string], nodeKind: TNodeKind, importStmt.addSon str if not processTopLevelStmt(importStmt, a): break -proc processModule(module: PSym, stream: PLLStream, rd: PRodReader) = +proc processModule*(module: PSym, stream: PLLStream, + rd: PRodReader): bool {.discardable.} = var p: TParsers a: TPassContextArray @@ -173,7 +168,7 @@ proc processModule(module: PSym, stream: PLLStream, rd: PRodReader) = s = llStreamOpen(filename, fmRead) if s == nil: rawMessage(errCannotOpenFile, filename) - return + return false else: s = stream while true: @@ -211,4 +206,4 @@ proc processModule(module: PSym, stream: PLLStream, rd: PRodReader) = var n = loadInitSection(rd) for i in countup(0, sonsLen(n) - 1): processTopLevelStmtCached(n.sons[i], a) closePassesCached(a) - + result = true diff --git a/compiler/scriptconfig.nim b/compiler/scriptconfig.nim index 8b2653bc9..0f1dfaa1e 100644 --- a/compiler/scriptconfig.nim +++ b/compiler/scriptconfig.nim @@ -150,7 +150,7 @@ proc runNimScript*(scriptName: string; freshDefines=true) = vm.globalCtx = setupVM(m, scriptName) compileSystemModule() - processModule(m, llStreamOpen(scriptName, fmRead), nil) + discard processModule(m, llStreamOpen(scriptName, fmRead), nil) # ensure we load 'system.nim' again for the real non-config stuff! resetAllModulesHard() |