small REPL improvements

This commit is contained in:
Araq
2013-06-28 16:40:01 +02:00
parent 2ca05eeb16
commit 976d5b18ed
3 changed files with 7 additions and 6 deletions

View File

@@ -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)

View File

@@ -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

View File

@@ -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