Files
Nim/tests/arc/tdeepcopy.nim
cooldome 531ed2dc36 fix #15405. deepcopy arc (#15410)
* fix #15405
* fix tests
* deepcopy for ARC has to be enabled via --deepcopy:on

Co-authored-by: Araq <rumpf_a@web.de>
2020-10-01 17:39:48 +02:00

68 lines
1.0 KiB
Nim

discard """
cmd: "nim c --gc:arc --deepcopy:on $file"
output: '''13 abc
13 abc
13 abc
13 abc
13 abc
13 abc
13 abc
13 abc
13 abc
13 abc
13 abc
called deepCopy for int
called deepCopy for int
called deepCopy for int
called deepCopy for int
called deepCopy for int
called deepCopy for int
called deepCopy for int
called deepCopy for int
called deepCopy for int
called deepCopy for int
called deepCopy for int
0'''
"""
type
PBinaryTree = ref object of RootObj
le, ri: PBinaryTree
value: int
proc mainB =
var x: PBinaryTree
deepCopy(x, PBinaryTree(ri: PBinaryTree(le: PBinaryTree(value: 13))))
var y: string
deepCopy y, "abc"
echo x.ri.le.value, " ", y
for i in 0..10:
mainB()
type
Bar[T] = object
x: T
proc `=deepCopy`[T](b: ref Bar[T]): ref Bar[T] =
result.new
result.x = b.x
when T is int:
echo "called deepCopy for int"
else:
echo "called deepCopy for something else"
proc main =
var dummy, c: ref Bar[int]
new(dummy)
dummy.x = 44
deepCopy c, dummy
for i in 0..10:
main()
echo getOccupiedMem()