From 3cf846e02c3e057030534a3031f0910fc0e45bf7 Mon Sep 17 00:00:00 2001 From: Araq Date: Tue, 26 Mar 2019 15:57:48 +0100 Subject: [PATCH] fixes #10904 --- compiler/sempass2.nim | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/compiler/sempass2.nim b/compiler/sempass2.nim index a3a474828f..fa4941ba46 100644 --- a/compiler/sempass2.nim +++ b/compiler/sempass2.nim @@ -708,7 +708,8 @@ proc track(tracked: PEffects, n: PNode) = if getConstExpr(tracked.owner_module, n, tracked.graph) != nil: return if op != nil: - createTypeBoundOps(tracked.c, op, n.info) + if tracked.owner.kind != skMacro: + createTypeBoundOps(tracked.c, op, n.info) if a.kind == nkCast and a[1].typ.kind == tyProc: a = a[1] # XXX: in rare situations, templates and macros will reach here after @@ -768,12 +769,14 @@ proc track(tracked: PEffects, n: PNode) = addAsgnFact(tracked.guards, n.sons[0], n.sons[1]) notNilCheck(tracked, n.sons[1], n.sons[0].typ) when false: cstringCheck(tracked, n) - createTypeBoundOps(tracked.c, n[0].typ, n.info) + if tracked.owner.kind != skMacro: + createTypeBoundOps(tracked.c, n[0].typ, n.info) of nkVarSection, nkLetSection: for child in n: let last = lastSon(child) if last.kind != nkEmpty: track(tracked, last) - createTypeBoundOps(tracked.c, child[0].typ, child.info) + if tracked.owner.kind != skMacro: + createTypeBoundOps(tracked.c, child[0].typ, child.info) if child.kind == nkIdentDefs and last.kind != nkEmpty: for i in 0 .. child.len-3: initVar(tracked, child.sons[i], volatileCheck=false)