summary refs log blame commit diff stats
path: root/tests/arc/tcomputedgotocopy.nim
blob: 8337123ba072ac8ead96ee37d52b84a51f763714 (plain) (tree)
1
2
           
                                 






































                                                                     
discard """
  cmd: '''nim c --gc:arc $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())