Revert "fixes #22058; invalid free with {.noSideEffect.} in template (#22088)"

This reverts commit 7b9b173476.
This commit is contained in:
narimiran
2023-06-14 21:49:02 +02:00
parent 7b9b173476
commit 503e7b708b
2 changed files with 1 additions and 35 deletions

View File

@@ -706,24 +706,6 @@ template handleNestedTempl(n, processCall: untyped, willProduceStmt = false) =
of nkWhen: # This should be a "when nimvm" node.
result = copyTree(n)
result[1][0] = processCall(n[1][0], s)
of nkPragmaBlock:
var inUncheckedAssignSection = 0
let pragmaList = n[0]
for pi in pragmaList:
if whichPragma(pi) == wCast:
case whichPragma(pi[1])
of wUncheckedAssign:
inUncheckedAssignSection = 1
else:
discard
result = shallowCopy(n)
inc c.inUncheckedAssignSection, inUncheckedAssignSection
for i in 0 ..< n.len-1:
result[i] = p(n[i], c, s, normal)
result[^1] = maybeVoid(n[^1], s)
dec c.inUncheckedAssignSection, inUncheckedAssignSection
else: assert(false)
proc pRaiseStmt(n: PNode, c: var Con; s: var Scope): PNode =
@@ -753,7 +735,7 @@ proc pRaiseStmt(n: PNode, c: var Con; s: var Scope): PNode =
proc p(n: PNode; c: var Con; s: var Scope; mode: ProcessMode): PNode =
if n.kind in {nkStmtList, nkStmtListExpr, nkBlockStmt, nkBlockExpr, nkIfStmt,
nkIfExpr, nkCaseStmt, nkWhen, nkWhileStmt, nkParForStmt, nkTryStmt, nkPragmaBlock}:
nkIfExpr, nkCaseStmt, nkWhen, nkWhileStmt, nkParForStmt, nkTryStmt}:
template process(child, s): untyped = p(child, c, s, mode)
handleNestedTempl(n, process)
elif mode == sinkArg:

View File

@@ -1,16 +0,0 @@
discard """
matrix: "--mm:arc -d:useMalloc; --mm:arc"
"""
block: # bug #22058
template foo(): auto =
{.noSideEffect.}:
newSeq[byte](1)
type V = object
v: seq[byte]
proc bar(): V =
V(v: foo())
doAssert bar().v == @[byte(0)]