diff --git a/compiler/evals.nim b/compiler/evals.nim index 84f0266ea..8c05d57fc 100644 --- a/compiler/evals.nim +++ b/compiler/evals.nim @@ -1532,10 +1532,11 @@ var oldErrorCount: int proc myProcess(c: PPassContext, n: PNode): PNode = # don't eval errornous code: - if oldErrorCount != msgs.gErrorCounter: - oldErrorCount = msgs.gErrorCounter - return n - result = eval(PEvalContext(c), n) + if oldErrorCount == msgs.gErrorCounter: + result = eval(PEvalContext(c), n) + else: + result = n + oldErrorCount = msgs.gErrorCounter const evalPass* = makePass(myOpen, nil, myProcess, myProcess) diff --git a/compiler/lookups.nim b/compiler/lookups.nim index 191a7aa55..e1ec9e14b 100644 --- a/compiler/lookups.nim +++ b/compiler/lookups.nim @@ -91,7 +91,8 @@ proc errorSym*(c: PContext, n: PNode): PSym = result.typ = errorType(c) incl(result.flags, sfDiscardable) # pretend it's imported from some unknown module to prevent cascading errors: - c.importTable.addSym(result) + if gCmd != cmdInteractive: + c.importTable.addSym(result) type TOverloadIterMode* = enum diff --git a/todo.txt b/todo.txt index bf06a1fb0..35c6a5704 100644 --- a/todo.txt +++ b/todo.txt @@ -15,7 +15,6 @@ version 0.9.4 Bugs ==== -- REPL: after an error no evaluation is performed for the next line - simple closure iterator doesn't work - docgen: sometimes effects are listed twice - 'result' is not properly cleaned for NRVO --> use uninit checking instead