compiler: show name of instantiating context in error traces (#6763) (#9207)

This commit is contained in:
xzfc 2018-10-11 14:34:56 +07:00 • committed by Andreas Rumpf
commit 8fc7cecfa2
9 changed files with 31 additions and 19 deletions

View file

@ -34,9 +34,9 @@ proc add(x: var string; y: char)
required type: var string
but expression 'k' is of type: Alias
t3330.nim(48, 8) template/generic instantiation from here
t3330.nim(48, 8) template/generic instantiation of `add` from here
t3330.nim(55, 6) Foo: 'bar.value' cannot be assigned to
t3330.nim(48, 8) template/generic instantiation from here
t3330.nim(48, 8) template/generic instantiation of `add` from here
t3330.nim(56, 6) Foo: 'bar.x' cannot be assigned to
expression: test(bar)'''

View file

@ -1,6 +1,6 @@
discard """
nimout: '''tmsginfo.nim(21, 1) Warning: foo1 [User]
tmsginfo.nim(22, 13) template/generic instantiation from here
tmsginfo.nim(22, 13) template/generic instantiation of `foo2` from here
tmsginfo.nim(15, 10) Warning: foo2 [User]
tmsginfo.nim(23, 1) Hint: foo3 [User]
tmsginfo.nim(19, 7) Hint: foo4 [User]

View file

@ -53,7 +53,10 @@ let
pegLineError =
peg"{[^(]*} '(' {\d+} ', ' {\d+} ') ' ('Error') ':' \s* {.*}"
pegLineTemplate =
peg"{[^(]*} '(' {\d+} ', ' {\d+} ') ' 'template/generic instantiation from here'.*"
peg"""
{[^(]*} '(' {\d+} ', ' {\d+} ') '
'template/generic instantiation' ( ' of `' [^`]+ '`' )? ' from here' .*
"""
pegOtherError = peg"'Error:' \s* {.*}"
pegSuccess = peg"'Hint: operation successful'.*"
pegOfInterest = pegLineError / pegOtherError