make SuccessX show project file + output file (#13043)

* make SuccessX show project file + output file
* address comments
* fix test and add `result.err = reNimcCrash` otherwise hard to see where reNimcCrash used
* address comments
This commit is contained in:
Timothee Cour 2020-01-07 15:39:07 -08:00 • committed by Andreas Rumpf
commit 15043d35b8
4 changed files with 29 additions and 14 deletions

View file

@ -74,11 +74,14 @@ let
'template/generic instantiation' ( ' of `' [^`]+ '`' )? ' from here' .*
"""
pegOtherError = peg"'Error:' \s* {.*}"
pegSuccess = peg"'Hint: operation successful'.*"
pegOfInterest = pegLineError / pegOtherError
var gTargets = {low(TTarget)..high(TTarget)}
proc isSuccess(input: string): bool =
# not clear how to do the equivalent of pkg/regex's: re"FOO(.*?)BAR" in pegs
input.startsWith("Hint: ") and input.endsWith("[SuccessX]")
proc normalizeMsg(s: string): string =
result = newStringOfCap(s.len+1)
for x in splitLines(s):
@ -157,7 +160,7 @@ proc callCompiler(cmdTemplate, filename, options, nimcache: string,
elif x =~ pegLineTemplate and err == "":
# `tmpl` contains the last template expansion before the error
tmpl = x
elif x =~ pegSuccess:
elif x.isSuccess:
suc = x
elif not running(p):
break
@ -170,6 +173,7 @@ proc callCompiler(cmdTemplate, filename, options, nimcache: string,
result.tfile = ""
result.tline = 0
result.tcolumn = 0
result.err = reNimcCrash
if tmpl =~ pegLineTemplate:
result.tfile = extractFilename(matches[0])
result.tline = parseInt(matches[1])
@ -181,7 +185,7 @@ proc callCompiler(cmdTemplate, filename, options, nimcache: string,
result.msg = matches[3]
elif err =~ pegOtherError:
result.msg = matches[0]
elif suc =~ pegSuccess:
elif suc.isSuccess:
result.err = reSuccess
proc callCCompiler(cmdTemplate, filename, options: string,