From d3df1b8edaf22101bc7205cb8bb0a661ee3278a2 Mon Sep 17 00:00:00 2001 From: Andreas Rumpf Date: Sat, 16 Mar 2019 10:38:06 +0100 Subject: mark user defined destructors with sfOverriden to simplify the logic --- compiler/semstmts.nim | 3 +++ 1 file changed, 3 insertions(+) diff --git a/compiler/semstmts.nim b/compiler/semstmts.nim index e2f7b6303..c3d909824 100644 --- a/compiler/semstmts.nim +++ b/compiler/semstmts.nim @@ -1579,6 +1579,7 @@ proc semOverride(c: PContext, s: PSym, n: PNode) = localError(c.config, n.info, errGenerated, "signature for '" & s.name.s & "' must be proc[T: object](x: var T)") incl(s.flags, sfUsed) + incl(s.flags, sfOverriden) of "deepcopy", "=deepcopy": if s.typ.len == 2 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, "signature for 'deepCopy' must be proc[T: ptr|ref](x: T): T") incl(s.flags, sfUsed) + incl(s.flags, sfOverriden) of "=", "=sink": if s.magic == mAsgn: return incl(s.flags, sfUsed) + incl(s.flags, sfOverriden) let t = s.typ if t.len == 3 and t.sons[0] == nil and t.sons[1].kind == tyVar: var obj = t.sons[1].sons[0] -- cgit 1.4.1-2-gfad0