summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorAndreas Rumpf <rumpf_a@web.de>2019-03-16 10:38:06 +0100
committerAndreas Rumpf <rumpf_a@web.de>2019-03-19 12:48:54 +0100
commitd3df1b8edaf22101bc7205cb8bb0a661ee3278a2 (patch)
treedcca74c60f160a6dbdd496c7793fe000a0063bc0
parent389b140029577845b9a0e40b6fecc8ba78af679f (diff)
downloadNim-d3df1b8edaf22101bc7205cb8bb0a661ee3278a2.tar.gz
mark user defined destructors with sfOverriden to simplify the logic
-rw-r--r--compiler/semstmts.nim3
1 files changed, 3 insertions, 0 deletions
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]