diff options
Diffstat (limited to 'tests/arc/tcomputedgotocopy.nim')
-rw-r--r-- | tests/arc/tcomputedgotocopy.nim | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/tests/arc/tcomputedgotocopy.nim b/tests/arc/tcomputedgotocopy.nim new file mode 100644 index 000000000..78cb6c5c0 --- /dev/null +++ b/tests/arc/tcomputedgotocopy.nim @@ -0,0 +1,41 @@ +discard """ + cmd: '''nim c --newruntime $file''' + output: '''2 +2''' +""" + +type + ObjWithDestructor = object + a: int +proc `=destroy`(self: var ObjWithDestructor) = + echo "destroyed" + +proc `=copy`(self: var ObjWithDestructor, other: ObjWithDestructor) = + echo "copied" + +proc test(a: range[0..1], arg: ObjWithDestructor) = + var iteration = 0 + while true: + {.computedGoto.} + + let + b = int(a) * 2 + c = a + d = arg + e = arg + + discard c + discard d + discard e + + inc iteration + + case a + of 0: + assert false + of 1: + echo b + if iteration == 2: + break + +test(1, ObjWithDestructor()) |