Files
Nim/tests/arc/tdeepcopy.nim
ringabout 5a71c36d25 fixes strictdefs warnings continue (#24520)
(cherry picked from commit d2d810585c)
2025-01-14 13:23:18 +01:00

68 lines
1.1 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 = nil
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] = nil
new(dummy)
dummy.x = 44
deepCopy c, dummy
for i in 0..10:
main()
echo getOccupiedMem()