[error messages, stacktraces] fix #8794 #9270 #9767 #9768 (#9766)

* fixes #8794 : `Error: undeclared field: 'foo'` should show type (+ where type is defined) (hard to guess in generic code)

* fixes #9270: `--listFullPaths` not honored by `declared in foo.nim` messages

* fixes #9767: VM stacktrace doesn't honor --excessiveStackTrace:on

* fixes #9768: VM stacktrace misses column info, can lead to ambiguous or harder to read stacktraces

* refactors some col+1 code to col + ColOffset (self documents code)

* make getProcHeader show declared info location also for types and all routine kinds (including macros,templates) instead of just (rather arbitrarily) for iterator,proc,func,method

* --listFullPaths now is honored in more places

* fix typo system/except.nim => lib/system/excpt.nim

* remove substr(foo, 0) hack in compiler/vm.nim which seems old and not applicable anymore
This commit is contained in:
Timothee Cour 2019-01-08 15:58:47 -08:00 • committed by GitHub
commit bf3a308e86
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
9 changed files with 129 additions and 31 deletions

39
tests/errmsgs/t8794.nim Normal file
View file

@ -0,0 +1,39 @@
discard """
cmd: "nim check $options $file"
errormsg: ""
nimout: '''
t8794.nim(39, 27) Error: undeclared field: 'a3' for type m8794.Foo3[declared in m8794.nim(1, 6)]
'''
"""
## line 20
## issue #8794
import m8794
when false: # pending https://github.com/nim-lang/Nim/pull/10091 add this
type Foo = object
a1: int
discard Foo().a2
type Foo3b = Foo3
var x2: Foo3b
proc getFun[T](): T =
var a: T
a
discard getFun[type(x2)]().a3