Files
Nim/tests/arc/tcomputedgotocopy.nim

45 lines
650 B
Nim

discard """
cmd: '''nim c --mm:arc $file'''
output: '''
2
2
destroyed
'''
"""
type
ObjWithDestructor = object
a: int
proc `=destroy`(self: 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())