support forward declared destructors
This commit is contained in:
parent
a055f628f4
commit
a388c35741
1 changed files with 6 additions and 2 deletions
|
|
@ -1595,7 +1595,9 @@ proc semOverride(c: PContext, s: PSym, n: PNode) =
|
||||||
else: break
|
else: break
|
||||||
if obj.kind in {tyObject, tyDistinct, tySequence, tyString}:
|
if obj.kind in {tyObject, tyDistinct, tySequence, tyString}:
|
||||||
obj = canonType(c, obj)
|
obj = canonType(c, obj)
|
||||||
if obj.destructor.isNil and tfCheckedForDestructor notin obj.flags:
|
if obj.attachedOps[attachedDestructor] == s:
|
||||||
|
discard "forward declared destructor"
|
||||||
|
elif obj.destructor.isNil and tfCheckedForDestructor notin obj.flags:
|
||||||
obj.attachedOps[attachedDestructor] = s
|
obj.attachedOps[attachedDestructor] = s
|
||||||
else:
|
else:
|
||||||
prevDestructor(c, obj.destructor, obj, n.info)
|
prevDestructor(c, obj.destructor, obj, n.info)
|
||||||
|
|
@ -1660,7 +1662,9 @@ proc semOverride(c: PContext, s: PSym, n: PNode) =
|
||||||
obj = canonType(c, obj)
|
obj = canonType(c, obj)
|
||||||
#echo "ATTACHING TO ", obj.id, " ", s.name.s, " ", cast[int](obj)
|
#echo "ATTACHING TO ", obj.id, " ", s.name.s, " ", cast[int](obj)
|
||||||
let k = if name == "=": attachedAsgn else: attachedSink
|
let k = if name == "=": attachedAsgn else: attachedSink
|
||||||
if obj.attachedOps[k].isNil and tfCheckedForDestructor notin obj.flags:
|
if obj.attachedOps[k] == s:
|
||||||
|
discard "forward declared op"
|
||||||
|
elif obj.attachedOps[k].isNil and tfCheckedForDestructor notin obj.flags:
|
||||||
obj.attachedOps[k] = s
|
obj.attachedOps[k] = s
|
||||||
else:
|
else:
|
||||||
prevDestructor(c, obj.attachedOps[k], obj, n.info)
|
prevDestructor(c, obj.attachedOps[k], obj, n.info)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue