summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--compiler/nimeval.nim10
-rw-r--r--lib/system.nim2
2 files changed, 8 insertions, 4 deletions
diff --git a/compiler/nimeval.nim b/compiler/nimeval.nim
index 882e10fbb..09d1eb1da 100644
--- a/compiler/nimeval.nim
+++ b/compiler/nimeval.nim
@@ -99,14 +99,16 @@ proc findNimStdLibCompileTime*(): string =
 
 proc createInterpreter*(scriptName: string;
                         searchPaths: openArray[string];
-                        flags: TSandboxFlags = {}): Interpreter =
+                        flags: TSandboxFlags = {},
+                        defines = @[("nimscript", "true")],
+                        registerOps = true): Interpreter =
   var conf = newConfigRef()
   var cache = newIdentCache()
   var graph = newModuleGraph(cache, conf)
   connectCallbacks(graph)
   initDefines(conf.symbols)
-  defineSymbol(conf.symbols, "nimscript")
-  defineSymbol(conf.symbols, "nimconfig")
+  for define in defines:
+    defineSymbol(conf.symbols, define[0], define[1])
   registerPass(graph, semPass)
   registerPass(graph, evalPass)
 
@@ -119,6 +121,8 @@ proc createInterpreter*(scriptName: string;
   var vm = newCtx(m, cache, graph)
   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)
diff --git a/lib/system.nim b/lib/system.nim
index 6b24bdcb8..098ad08be 100644
--- a/lib/system.nim
+++ b/lib/system.nim
@@ -3026,5 +3026,5 @@ export widestrs
 import system/io
 export io
 
-when not defined(createNimHcr):
+when not defined(createNimHcr) and not defined(nimscript):
   include nimhcr