mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-30 09:54:49 +00:00
fixes #23536
(cherry picked from commit 0b0f185bd1)
This commit is contained in:
@@ -452,6 +452,14 @@ proc transformYield(c: PTransf, n: PNode): PNode =
|
||||
let rhs = transform(c, e)
|
||||
result.add(asgnTo(lhs, rhs))
|
||||
|
||||
|
||||
# bug #23536; note that the info of forLoopBody should't change
|
||||
for idx in 0 ..< result.len:
|
||||
var changeNode = result[idx]
|
||||
changeNode.info = c.transCon.forStmt.info
|
||||
for i, child in changeNode:
|
||||
child.info = changeNode.info
|
||||
|
||||
inc(c.transCon.yieldStmts)
|
||||
if c.transCon.yieldStmts <= 1:
|
||||
# common case
|
||||
@@ -462,12 +470,6 @@ proc transformYield(c: PTransf, n: PNode): PNode =
|
||||
result.add(introduceNewLocalVars(c, c.transCon.forLoopBody))
|
||||
c.isIntroducingNewLocalVars = false
|
||||
|
||||
for idx in 0 ..< result.len:
|
||||
var changeNode = result[idx]
|
||||
changeNode.info = c.transCon.forStmt.info
|
||||
for i, child in changeNode:
|
||||
child.info = changeNode.info
|
||||
|
||||
proc transformAddrDeref(c: PTransf, n: PNode, kinds: TNodeKinds): PNode =
|
||||
result = transformSons(c, n)
|
||||
if c.graph.config.backend == backendCpp or sfCompileToCpp in c.module.flags: return
|
||||
|
||||
26
tests/errmsgs/t23536.nim
Normal file
26
tests/errmsgs/t23536.nim
Normal file
@@ -0,0 +1,26 @@
|
||||
discard """
|
||||
matrix: "--stackTrace:on --excessiveStackTrace:off"
|
||||
"""
|
||||
|
||||
const expected = """
|
||||
wrong trace:
|
||||
t23536.nim(22) t23536
|
||||
t23536.nim(17) foo
|
||||
assertions.nim(41) failedAssertImpl
|
||||
assertions.nim(36) raiseAssert
|
||||
fatal.nim(53) sysFatal
|
||||
"""
|
||||
|
||||
|
||||
try:
|
||||
proc foo = # bug #23536
|
||||
doAssert false
|
||||
|
||||
for i in 0 .. 1:
|
||||
|
||||
|
||||
foo()
|
||||
except AssertionDefect:
|
||||
let e = getCurrentException()
|
||||
let trace = e.getStackTrace
|
||||
doAssert "wrong trace:\n" & trace == expected
|
||||
Reference in New Issue
Block a user