diff options
-rw-r--r-- | compiler/semtempl.nim | 3 | ||||
-rw-r--r-- | tests/template/tgensymregression.nim | 18 |
2 files changed, 19 insertions, 2 deletions
diff --git a/compiler/semtempl.nim b/compiler/semtempl.nim index 8c39a7676..0b1be5abf 100644 --- a/compiler/semtempl.nim +++ b/compiler/semtempl.nim @@ -639,8 +639,7 @@ proc semTemplateDef(c: PContext, n: PNode): PNode = for i in 1 .. s.typ.n.len-1: let param = s.typ.n.sons[i].sym param.flags.incl sfTemplateParam - if optNimV019 in c.config.globalOptions: - param.flags.excl sfGenSym + param.flags.excl sfGenSym if param.typ.kind != tyUntyped: allUntyped = false if len(gp) > 0: if n.sons[genericParamsPos].kind == nkEmpty: diff --git a/tests/template/tgensymregression.nim b/tests/template/tgensymregression.nim index 4194e3e88..a743d3a08 100644 --- a/tests/template/tgensymregression.nim +++ b/tests/template/tgensymregression.nim @@ -70,3 +70,21 @@ macro makeProc(): typed = makeProc() someProc() + +# bug #12193 +import macros, strutils + +macro gen(T: typedesc): untyped = + let typeSym = getTypeImpl(T)[1] + let param = genSym(nskParam, "s") + let value = nnkBracketExpr.newTree(param, newIntLitNode(0)) + result = newProc( + name = ident"pack", + params = [typeSym, + newIdentDefs(param, nnkBracketExpr.newTree(ident"seq", ident"string"))], + body = newStmtList(newCall(typeSym, newCall(bindSym"parseInt", value))), + procType = nnkTemplateDef) + echo repr result + +gen(int) +let i = pack(@["2"]) |