summary refs log tree commit diff stats
path: root/compiler
diff options
context:
space:
mode:
authorcooldome <cdome@bk.ru>2019-12-11 10:46:20 +0000
committerGitHub <noreply@github.com>2019-12-11 10:46:20 +0000
commit94289161f9dd00b2fc3070b08895a3b6c557ef44 (patch)
tree3c49656d1e883d265ae1429b48874fb36d9824c7 /compiler
parent3524944e215b1c1118a68d31a57a26e45b343328 (diff)
downloadNim-94289161f9dd00b2fc3070b08895a3b6c557ef44.tar.gz
invoke createTypeBoundOps for constructors (#12878)
Diffstat (limited to 'compiler')
-rw-r--r--compiler/sempass2.nim7
1 files changed, 7 insertions, 0 deletions
diff --git a/compiler/sempass2.nim b/compiler/sempass2.nim
index e64bccdce..b94d75e87 100644
--- a/compiler/sempass2.nim
+++ b/compiler/sempass2.nim
@@ -855,9 +855,16 @@ proc track(tracked: PEffects, n: PNode) =
       track(tracked, x)
       if x[0].kind == nkSym and sfDiscriminant in x[0].sym.flags:
         addDiscriminantFact(tracked.guards, x)
+      if tracked.owner.kind != skMacro:
+        createTypeBoundOps(tracked, x[1].typ, n.info)
     setLen(tracked.guards.s, oldFacts)
     if tracked.owner.kind != skMacro:
       createTypeBoundOps(tracked, n.typ, n.info)
+  of nkTupleConstr:
+    for i in 0..<n.len:
+      track(tracked, n[i])
+      if tracked.owner.kind != skMacro:
+        createTypeBoundOps(tracked, n[i].typ, n.info)
   of nkPragmaBlock:
     let pragmaList = n[0]
     let oldLocked = tracked.locked.len