fixes #10192
This commit is contained in:
parent
a85d387928
commit
2475d92c36
2 changed files with 21 additions and 1 deletions
|
|
@ -37,7 +37,7 @@ proc evalTemplateAux(templ, actual: PNode, c: var TemplCtx, result: PNode) =
|
||||||
case templ.kind
|
case templ.kind
|
||||||
of nkSym:
|
of nkSym:
|
||||||
var s = templ.sym
|
var s = templ.sym
|
||||||
if s.owner == nil or s.owner.id == c.owner.id:
|
if (s.owner == nil and s.kind == skParam) or s.owner == c.owner:
|
||||||
if s.kind == skParam and sfGenSym notin s.flags:
|
if s.kind == skParam and sfGenSym notin s.flags:
|
||||||
handleParam actual.sons[s.position]
|
handleParam actual.sons[s.position]
|
||||||
elif (s.owner != nil) and (s.kind == skGenericParam or
|
elif (s.owner != nil) and (s.kind == skGenericParam or
|
||||||
|
|
|
||||||
|
|
@ -110,3 +110,23 @@ implementUnary(): x*x
|
||||||
|
|
||||||
registerInstantiation(int)
|
registerInstantiation(int)
|
||||||
registerInstantiation(float)
|
registerInstantiation(float)
|
||||||
|
|
||||||
|
# bug #10192
|
||||||
|
template nest(body) {.dirty.} =
|
||||||
|
template p1(b1: untyped) {.dirty, used.} =
|
||||||
|
template implp1: untyped {.dirty.} = b1
|
||||||
|
template p2(b2: untyped) {.dirty, used.} =
|
||||||
|
template implp2: untyped {.dirty.} = b2
|
||||||
|
|
||||||
|
body
|
||||||
|
implp1
|
||||||
|
implp2
|
||||||
|
|
||||||
|
template test() =
|
||||||
|
nest:
|
||||||
|
p1:
|
||||||
|
var foo = "bar"
|
||||||
|
p2:
|
||||||
|
doAssert(foo.len == 3)
|
||||||
|
|
||||||
|
test()
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue