diff options
author | cooldome <cdome@bk.ru> | 2019-12-11 10:46:20 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-12-11 10:46:20 +0000 |
commit | 94289161f9dd00b2fc3070b08895a3b6c557ef44 (patch) | |
tree | 3c49656d1e883d265ae1429b48874fb36d9824c7 /compiler | |
parent | 3524944e215b1c1118a68d31a57a26e45b343328 (diff) | |
download | Nim-94289161f9dd00b2fc3070b08895a3b6c557ef44.tar.gz |
invoke createTypeBoundOps for constructors (#12878)
Diffstat (limited to 'compiler')
-rw-r--r-- | compiler/sempass2.nim | 7 |
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 |