diff options
author | Araq <rumpf_a@web.de> | 2017-03-06 18:38:15 +0100 |
---|---|---|
committer | Araq <rumpf_a@web.de> | 2017-03-06 18:38:15 +0100 |
commit | 4a77b66b19e42b89308817ddc3749e316937e631 (patch) | |
tree | c36cb76cc25ad00f3b5db6722da6fba86d565bec /compiler | |
parent | 8c0e27e8d907931c8cb3483edbdd90d114563135 (diff) | |
download | Nim-4a77b66b19e42b89308817ddc3749e316937e631.tar.gz |
fixes #5478
Diffstat (limited to 'compiler')
-rw-r--r-- | compiler/semtempl.nim | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/compiler/semtempl.nim b/compiler/semtempl.nim index f809b6a50..5ac2e678a 100644 --- a/compiler/semtempl.nim +++ b/compiler/semtempl.nim @@ -144,10 +144,8 @@ proc semTemplBody(c: var TemplCtx, n: PNode): PNode proc openScope(c: var TemplCtx) = openScope(c.c) - inc c.scopeN proc closeScope(c: var TemplCtx) = - dec c.scopeN closeScope(c.c) proc semTemplBodyScope(c: var TemplCtx, n: PNode): PNode = @@ -172,7 +170,6 @@ proc newGenSym(kind: TSymKind, n: PNode, c: var TemplCtx): PSym = result = newSym(kind, considerQuotedIdent(n), c.owner, n.info) incl(result.flags, sfGenSym) incl(result.flags, sfShadowed) - #if c.scopeN == 0: incl(result.flags, sfFromGeneric) proc addLocalDecl(c: var TemplCtx, n: var PNode, k: TSymKind) = # locals default to 'gensym': @@ -275,10 +272,12 @@ proc semRoutineInTemplBody(c: var TemplCtx, n: PNode, k: TSymKind): PNode = for i in patternPos..miscPos: n.sons[i] = semTemplBody(c, n.sons[i]) # open scope for locals + inc c.scopeN openScope(c) n.sons[bodyPos] = semTemplBody(c, n.sons[bodyPos]) # close scope for locals closeScope(c) + dec c.scopeN # close scope for parameters closeScope(c) @@ -346,7 +345,8 @@ proc semTemplBody(c: var TemplCtx, n: PNode): PNode = of nkBindStmt: result = semBindStmt(c.c, n, c.toBind) of nkMixinStmt: - result = semMixinStmt(c.c, n, c.toMixin) + if c.scopeN > 0: result = semTemplBodySons(c, n) + else: result = semMixinStmt(c.c, n, c.toMixin) of nkEmpty, nkSym..nkNilLit: discard of nkIfStmt: |