123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- 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())
|