mirror of
https://github.com/nim-lang/Nim.git
synced 2026-02-12 06:18:51 +00:00
39 lines
608 B
Nim
39 lines
608 B
Nim
discard """
|
|
output: '''
|
|
destroying d
|
|
destroying c
|
|
destroying a 2
|
|
destroying d
|
|
destroying c
|
|
destroying a 1
|
|
'''
|
|
joinable: false
|
|
"""
|
|
|
|
type
|
|
Aaaa {.inheritable.} = object
|
|
vvvv: int
|
|
Bbbb = object of Aaaa
|
|
c: Cccc
|
|
d: Dddd
|
|
Cccc = object
|
|
Dddd = object
|
|
|
|
Holder = object
|
|
member: ref Aaaa
|
|
|
|
proc `=destroy`(v: Cccc) =
|
|
echo "destroying c"
|
|
|
|
proc `=destroy`(v: Dddd) =
|
|
echo "destroying d"
|
|
|
|
proc `=destroy`(v: Aaaa) =
|
|
echo "destroying a ", v.vvvv
|
|
|
|
func makeHolder(vvvv: int): ref Holder =
|
|
(ref Holder)(member: (ref Bbbb)(vvvv: vvvv))
|
|
|
|
block:
|
|
var v = makeHolder(1)
|
|
var v2 = makeHolder(2) |