From fd8200ea282d20094e3c6a9b6ed2f9c6da05da0a Mon Sep 17 00:00:00 2001 From: ringabout <43030857+ringabout@users.noreply.github.com> Date: Tue, 4 Aug 2026 14:20:13 +0800 Subject: [PATCH] closes #26064 and #26063; adds test cases (#26072) closes #26064 closes #26063 (cherry picked from commit 7a1e162b0ce380730b78fb40088ac4d0df2719b4) --- tests/ccgbugs/t26063.nim | 44 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 tests/ccgbugs/t26063.nim diff --git a/tests/ccgbugs/t26063.nim b/tests/ccgbugs/t26063.nim new file mode 100644 index 0000000000..8444bbf9f9 --- /dev/null +++ b/tests/ccgbugs/t26063.nim @@ -0,0 +1,44 @@ +discard """ + matrix: "--mm:refc; --mm:orc" + output: ''' +ok +ok +''' +""" +block: + type Node = object + children: seq[Node] + + proc buildMoved(n: var Node): Node = + Node(children: move(n.children[0].children)) + + proc actMoved(n: var Node) = + n.children[0] = Node(children: @[buildMoved(n)]) + doAssert n.children[0].children.len == 1 + + proc main = + var a = Node(children: @[Node(children: @[Node()])]) + actMoved(a) + doAssert a.children[0].children.len == 1 + + main() + echo "ok" + +block: + type Node = object + children: seq[Node] + + proc buildCopied(n: var Node): Node = + let kids = n.children[0].children + Node(children: kids) + + proc actCopied(n: var Node) = + n.children[0] = Node(children: @[buildCopied(n)]) + + proc main = + var b = Node(children: @[Node(children: @[Node()])]) + actCopied(b) + doAssert b.children[0].children.len == 1 + + main() + echo "ok" \ No newline at end of file