diff options
-rw-r--r-- | compiler/cmdlinehelper.nim | 23 | ||||
-rw-r--r-- | compiler/nim.nim | 9 | ||||
-rw-r--r-- | drnim/drnim.nim | 11 | ||||
-rw-r--r-- | nimsuggest/nimsuggest.nim | 14 | ||||
-rw-r--r-- | tools/nimfind.nim | 7 |
5 files changed, 32 insertions, 32 deletions
diff --git a/compiler/cmdlinehelper.nim b/compiler/cmdlinehelper.nim index 4777af8df..a6b56b97e 100644 --- a/compiler/cmdlinehelper.nim +++ b/compiler/cmdlinehelper.nim @@ -34,7 +34,6 @@ type suggestMode*: bool supportsStdinFile*: bool processCmdLine*: proc(pass: TCmdLinePass, cmd: string; config: ConfigRef) - mainCommand*: proc(graph: ModuleGraph) proc initDefinesProg*(self: NimProg, conf: ConfigRef, name: string) = condsyms.initDefines(conf.symbols) @@ -56,21 +55,21 @@ proc processCmdLineAndProjectPath*(self: NimProg, conf: ConfigRef) = else: conf.projectPath = AbsoluteDir canonicalizePath(conf, AbsoluteFile getCurrentDir()) -proc loadConfigsAndRunMainCommand*(self: NimProg, cache: IdentCache; conf: ConfigRef): bool = +proc loadConfigsAndRunMainCommand*(self: NimProg, cache: IdentCache; conf: ConfigRef; + graph: ModuleGraph): bool = if self.suggestMode: conf.command = "nimsuggest" loadConfigs(DefaultConfig, cache, conf) # load all config files - block: + if not self.suggestMode: let scriptFile = conf.projectFull.changeFileExt("nims") - if not self.suggestMode: - # 'nim foo.nims' means to just run the NimScript file and do nothing more: - if fileExists(scriptFile) and scriptFile == conf.projectFull: - if conf.command == "": - conf.command = "e" - return false - elif conf.command.normalize == "e": - return false + # 'nim foo.nims' means to just run the NimScript file and do nothing more: + if fileExists(scriptFile) and scriptFile == conf.projectFull: + if conf.command == "": + conf.command = "e" + return false + elif conf.command.normalize == "e": + return false # now process command line arguments again, because some options in the # command line can overwrite the config file's settings @@ -79,7 +78,5 @@ proc loadConfigsAndRunMainCommand*(self: NimProg, cache: IdentCache; conf: Confi if conf.command == "": rawMessage(conf, errGenerated, "command missing") - let graph = newModuleGraph(cache, conf) graph.suggestMode = self.suggestMode - self.mainCommand(graph) return true diff --git a/compiler/nim.nim b/compiler/nim.nim index 2b0d78dd4..15aeccb33 100644 --- a/compiler/nim.nim +++ b/compiler/nim.nim @@ -22,7 +22,7 @@ import commands, options, msgs, extccomp, strutils, os, main, parseopt, idents, lineinfos, cmdlinehelper, - pathutils + pathutils, modulegraphs from std/browsers import openDefaultBrowser from nodejs import findNodeJs @@ -70,8 +70,7 @@ proc processCmdLine(pass: TCmdLinePass, cmd: string; config: ConfigRef) = proc handleCmdLine(cache: IdentCache; conf: ConfigRef) = let self = NimProg( supportsStdinFile: true, - processCmdLine: processCmdLine, - mainCommand: mainCommand + processCmdLine: processCmdLine ) self.initDefinesProg(conf, "nim_compiler") if paramCount() == 0: @@ -79,7 +78,9 @@ proc handleCmdLine(cache: IdentCache; conf: ConfigRef) = return self.processCmdLineAndProjectPath(conf) - if not self.loadConfigsAndRunMainCommand(cache, conf): return + var graph = newModuleGraph(cache, conf) + if not self.loadConfigsAndRunMainCommand(cache, conf, graph): return + mainCommand(graph) if conf.hasHint(hintGCStats): echo(GC_getStatistics()) #echo(GC_getStatistics()) if conf.errorCounter != 0: return diff --git a/drnim/drnim.nim b/drnim/drnim.nim index e17667ec7..b4761a398 100644 --- a/drnim/drnim.nim +++ b/drnim/drnim.nim @@ -1209,15 +1209,13 @@ proc mainCommand(graph: ModuleGraph) = else: "Debug" let sec = formatFloat(epochTime() - conf.lastCmdTime, ffDecimal, 3) let project = if optListFullPaths in conf.globalOptions: $conf.projectFull else: $conf.projectName - var output = $conf.absOutFile - if optListFullPaths notin conf.globalOptions: output = output.AbsoluteFile.extractFilename rawMessage(conf, hintSuccessX, [ "loc", loc, "sec", sec, "mem", mem, "build", build, "project", project, - "output", output, + "output", "" ]) proc processCmdLine(pass: TCmdLinePass, cmd: string; config: ConfigRef) = @@ -1262,8 +1260,7 @@ proc handleCmdLine(cache: IdentCache; conf: ConfigRef) = incl conf.options, optStaticBoundsCheck let self = NimProg( supportsStdinFile: true, - processCmdLine: processCmdLine, - mainCommand: mainCommand + processCmdLine: processCmdLine ) self.initDefinesProg(conf, "drnim") if paramCount() == 0: @@ -1271,7 +1268,9 @@ proc handleCmdLine(cache: IdentCache; conf: ConfigRef) = return self.processCmdLineAndProjectPath(conf) - if not self.loadConfigsAndRunMainCommand(cache, conf): return + var graph = newModuleGraph(cache, conf) + if not self.loadConfigsAndRunMainCommand(cache, conf, graph): return + mainCommand(graph) if conf.hasHint(hintGCStats): echo(GC_getStatistics()) when compileOption("gc", "v2") or compileOption("gc", "refc"): diff --git a/nimsuggest/nimsuggest.nim b/nimsuggest/nimsuggest.nim index 9a0962df3..afc692241 100644 --- a/nimsuggest/nimsuggest.nim +++ b/nimsuggest/nimsuggest.nim @@ -619,8 +619,7 @@ proc processCmdLine*(pass: TCmdLinePass, cmd: string; conf: ConfigRef) = proc handleCmdLine(cache: IdentCache; conf: ConfigRef) = let self = NimProg( suggestMode: true, - processCmdLine: processCmdLine, - mainCommand: mainCommand + processCmdLine: processCmdLine ) self.initDefinesProg(conf, "nimsuggest") @@ -644,7 +643,9 @@ proc handleCmdLine(cache: IdentCache; conf: ConfigRef) = #msgs.writelnHook = proc (line: string) = log(line) myLog("START " & conf.projectFull.string) - discard self.loadConfigsAndRunMainCommand(cache, conf) + var graph = newModuleGraph(cache, conf) + if self.loadConfigsAndRunMainCommand(cache, conf, graph): + mainCommand(graph) when isMainModule: handleCmdLine(newIdentCache(), newConfigRef()) @@ -698,8 +699,7 @@ else: conf = newConfigRef() self = NimProg( suggestMode: true, - processCmdLine: mockCmdLine, - mainCommand: mockCommand + processCmdLine: mockCmdLine ) self.initDefinesProg(conf, "nimsuggest") @@ -722,7 +722,9 @@ else: #msgs.writelnHook = proc (line: string) = log(line) myLog("START " & conf.projectFull.string) - discard self.loadConfigsAndRunMainCommand(cache, conf) + var graph = newModuleGraph(cache, conf) + if self.loadConfigsAndRunMainCommand(cache, conf, graph): + mockCommand(graph) if gLogging: for it in conf.searchPaths: log(it.string) diff --git a/tools/nimfind.nim b/tools/nimfind.nim index 4ad5fbb4f..f13e86aaa 100644 --- a/tools/nimfind.nim +++ b/tools/nimfind.nim @@ -208,8 +208,7 @@ proc processCmdLine*(pass: TCmdLinePass, cmd: string; conf: ConfigRef) = proc handleCmdLine(cache: IdentCache; conf: ConfigRef) = let self = NimProg( suggestMode: true, - processCmdLine: processCmdLine, - mainCommand: mainCommand + processCmdLine: processCmdLine ) self.initDefinesProg(conf, "nimfind") @@ -228,6 +227,8 @@ proc handleCmdLine(cache: IdentCache; conf: ConfigRef) = if not dirExists(conf.prefixDir / RelativeDir"lib"): conf.prefixDir = AbsoluteDir"" - discard self.loadConfigsAndRunMainCommand(cache, conf) + var graph = newModuleGraph(cache, conf) + if self.loadConfigsAndRunMainCommand(cache, conf, graph): + mainCommand(graph) handleCmdLine(newIdentCache(), newConfigRef()) |