diff options
Diffstat (limited to 'compiler/nimeval.nim')
-rw-r--r-- | compiler/nimeval.nim | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/compiler/nimeval.nim b/compiler/nimeval.nim index 5d4fea9f3..3ffe347c2 100644 --- a/compiler/nimeval.nim +++ b/compiler/nimeval.nim @@ -19,6 +19,7 @@ type mainModule: PSym graph: ModuleGraph scriptName: string + idgen: IdGenerator iterator exportedSymbols*(i: Interpreter): PSym = assert i != nil @@ -74,7 +75,7 @@ proc evalScript*(i: Interpreter; scriptStream: PLLStream = nil) = let s = if scriptStream != nil: scriptStream else: llStreamOpen(findFile(i.graph.config, i.scriptName), fmRead) - processModule(i.graph, i.mainModule, s) + processModule(i.graph, i.mainModule, i.idgen, s) proc findNimStdLib*(): string = ## Tries to find a path to a valid "system.nim" file. @@ -121,14 +122,15 @@ proc createInterpreter*(scriptName: string; var m = graph.makeModule(scriptName) incl(m.flags, sfMainModule) - var vm = newCtx(m, cache, graph) + var idgen = idGeneratorFromModule(m) + var vm = newCtx(m, cache, graph, idgen) vm.mode = emRepl vm.features = flags if registerOps: vm.registerAdditionalOps() # Required to register parts of stdlib modules graph.vm = vm graph.compileSystemModule() - result = Interpreter(mainModule: m, graph: graph, scriptName: scriptName) + result = Interpreter(mainModule: m, graph: graph, scriptName: scriptName, idgen: idgen) proc destroyInterpreter*(i: Interpreter) = ## destructor. @@ -162,6 +164,8 @@ proc runRepl*(r: TLLRepl; registerPass(graph, evalPass) var m = graph.makeStdinModule() incl(m.flags, sfMainModule) - if supportNimscript: graph.vm = setupVM(m, cache, "stdin", graph) + var idgen = idGeneratorFromModule(m) + + if supportNimscript: graph.vm = setupVM(m, cache, "stdin", graph, idgen) graph.compileSystemModule() - processModule(graph, m, llStreamOpenStdIn(r)) + processModule(graph, m, idgen, llStreamOpenStdIn(r)) |