* 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:
parent
fb26b95f81
commit
bf3a308e86
9 changed files with 129 additions and 31 deletions
2
tests/errmsgs/m8794.nim
Normal file
2
tests/errmsgs/m8794.nim
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
type Foo3* = object
|
||||
a1: int
|
||||
39
tests/errmsgs/t8794.nim
Normal file
39
tests/errmsgs/t8794.nim
Normal 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
|
||||
30
tests/errmsgs/t9768.nim
Normal file
30
tests/errmsgs/t9768.nim
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
discard """
|
||||
errmsg: "unhandled exception:"
|
||||
file: "system.nim"
|
||||
nimout: '''
|
||||
stack trace: (most recent call last)
|
||||
t9768.nim(28, 33) main
|
||||
t9768.nim(23, 11) foo1
|
||||
'''
|
||||
"""
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## line 20
|
||||
|
||||
proc foo1(a: int): auto =
|
||||
doAssert a < 4
|
||||
result = a * 2
|
||||
|
||||
proc main()=
|
||||
static:
|
||||
if foo1(1) > 0: discard foo1(foo1(2))
|
||||
|
||||
main()
|
||||
Loading…
Add table
Add a link
Reference in a new issue