mark user defined destructors with sfOverriden to simplify the logic
This commit is contained in:
parent
389b140029
commit
d3df1b8eda
1 changed files with 3 additions and 0 deletions
|
|
@ -1579,6 +1579,7 @@ proc semOverride(c: PContext, s: PSym, n: PNode) =
|
||||||
localError(c.config, n.info, errGenerated,
|
localError(c.config, n.info, errGenerated,
|
||||||
"signature for '" & s.name.s & "' must be proc[T: object](x: var T)")
|
"signature for '" & s.name.s & "' must be proc[T: object](x: var T)")
|
||||||
incl(s.flags, sfUsed)
|
incl(s.flags, sfUsed)
|
||||||
|
incl(s.flags, sfOverriden)
|
||||||
of "deepcopy", "=deepcopy":
|
of "deepcopy", "=deepcopy":
|
||||||
if s.typ.len == 2 and
|
if s.typ.len == 2 and
|
||||||
s.typ.sons[1].skipTypes(abstractInst).kind in {tyRef, tyPtr} and
|
s.typ.sons[1].skipTypes(abstractInst).kind in {tyRef, tyPtr} and
|
||||||
|
|
@ -1607,9 +1608,11 @@ proc semOverride(c: PContext, s: PSym, n: PNode) =
|
||||||
localError(c.config, n.info, errGenerated,
|
localError(c.config, n.info, errGenerated,
|
||||||
"signature for 'deepCopy' must be proc[T: ptr|ref](x: T): T")
|
"signature for 'deepCopy' must be proc[T: ptr|ref](x: T): T")
|
||||||
incl(s.flags, sfUsed)
|
incl(s.flags, sfUsed)
|
||||||
|
incl(s.flags, sfOverriden)
|
||||||
of "=", "=sink":
|
of "=", "=sink":
|
||||||
if s.magic == mAsgn: return
|
if s.magic == mAsgn: return
|
||||||
incl(s.flags, sfUsed)
|
incl(s.flags, sfUsed)
|
||||||
|
incl(s.flags, sfOverriden)
|
||||||
let t = s.typ
|
let t = s.typ
|
||||||
if t.len == 3 and t.sons[0] == nil and t.sons[1].kind == tyVar:
|
if t.len == 3 and t.sons[0] == nil and t.sons[1].kind == tyVar:
|
||||||
var obj = t.sons[1].sons[0]
|
var obj = t.sons[1].sons[0]
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue