parent
17911a116d
commit
41c29cb3a1
2 changed files with 72 additions and 17 deletions
|
|
@ -1,48 +1,81 @@
|
|||
discard """
|
||||
output: '''@[1]
|
||||
@[116, 101, 115, 116]
|
||||
@[1953719668, 875770417]'''
|
||||
@[1953719668, 875770417]
|
||||
destroying O1'''
|
||||
cmd: '''nim c --gc:arc --expandArc:main --expandArc:main1 --expandArc:main2 --expandArc:main3 --hints:off --assertions:off $file'''
|
||||
nimout: '''--expandArc: main
|
||||
|
||||
var
|
||||
data
|
||||
:tmpD
|
||||
`=copy`(data, cast[string](encode(cast[seq[byte]](
|
||||
:tmpD = newString(100)
|
||||
:tmpD))))
|
||||
`=destroy`(:tmpD)
|
||||
`=destroy`(data)
|
||||
:tmpD_1
|
||||
:tmpD_2
|
||||
data =
|
||||
wasMoved(:tmpD)
|
||||
`=copy`(:tmpD, cast[string](
|
||||
:tmpD_2 = encode(cast[seq[byte]](
|
||||
:tmpD_1 = newString(100)
|
||||
:tmpD_1))
|
||||
:tmpD_2))
|
||||
:tmpD
|
||||
`=destroy`(:tmpD_2)
|
||||
`=destroy_1`(:tmpD_1)
|
||||
`=destroy_1`(data)
|
||||
-- end of expandArc ------------------------
|
||||
--expandArc: main1
|
||||
|
||||
var
|
||||
s
|
||||
data
|
||||
:tmpD
|
||||
:tmpD_1
|
||||
s = newString(100)
|
||||
`=copy`(data, cast[string](encode(toOpenArrayByte(s, 0, len(s) - 1))))
|
||||
`=destroy`(data)
|
||||
`=destroy`(s)
|
||||
data =
|
||||
wasMoved(:tmpD)
|
||||
`=copy`(:tmpD, cast[string](
|
||||
:tmpD_1 = encode(toOpenArrayByte(s, 0, len(s) - 1))
|
||||
:tmpD_1))
|
||||
:tmpD
|
||||
`=destroy`(:tmpD_1)
|
||||
`=destroy_1`(data)
|
||||
`=destroy_1`(s)
|
||||
-- end of expandArc ------------------------
|
||||
--expandArc: main2
|
||||
|
||||
var
|
||||
s
|
||||
data
|
||||
:tmpD
|
||||
:tmpD_1
|
||||
s = newSeq(100)
|
||||
`=copy`(data, cast[string](encode(s)))
|
||||
`=destroy`(data)
|
||||
`=destroy_1`(s)
|
||||
data =
|
||||
wasMoved(:tmpD)
|
||||
`=copy`(:tmpD, cast[string](
|
||||
:tmpD_1 = encode(s)
|
||||
:tmpD_1))
|
||||
:tmpD
|
||||
`=destroy`(:tmpD_1)
|
||||
`=destroy_1`(data)
|
||||
`=destroy`(s)
|
||||
-- end of expandArc ------------------------
|
||||
--expandArc: main3
|
||||
|
||||
var
|
||||
data
|
||||
:tmpD
|
||||
`=copy`(data, cast[string](encode do:
|
||||
:tmpD = newSeq(100)
|
||||
:tmpD))
|
||||
`=destroy`(:tmpD)
|
||||
:tmpD_1
|
||||
:tmpD_2
|
||||
data =
|
||||
wasMoved(:tmpD)
|
||||
`=copy`(:tmpD, cast[string](
|
||||
:tmpD_2 = encode do:
|
||||
:tmpD_1 = newSeq(100)
|
||||
:tmpD_1
|
||||
:tmpD_2))
|
||||
:tmpD
|
||||
`=destroy`(:tmpD_2)
|
||||
`=destroy`(:tmpD_1)
|
||||
`=destroy_1`(data)
|
||||
-- end of expandArc ------------------------'''
|
||||
"""
|
||||
|
|
@ -89,3 +122,25 @@ echo a
|
|||
#issue 11204
|
||||
var ac {.compileTime.} = @["a", "b"]
|
||||
const bc = ac.len
|
||||
|
||||
|
||||
type
|
||||
O = object of RootRef
|
||||
i: int
|
||||
|
||||
O1 = object of O
|
||||
O2 = object of O
|
||||
|
||||
proc `=destroy`(o: var O) =
|
||||
echo "destroying O"
|
||||
|
||||
proc `=destroy`(o: var O1) =
|
||||
echo "destroying O1"
|
||||
|
||||
proc `=destroy`(o: var O2) =
|
||||
echo "destroying O2"
|
||||
|
||||
proc test =
|
||||
let o3 = cast[ref O2]((ref O1)())
|
||||
|
||||
test()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue