From 059a16b34dedca49be603fef40185cbfb8938bed Mon Sep 17 00:00:00 2001 From: Andreas Rumpf Date: Mon, 16 Sep 2019 15:38:07 +0200 Subject: [PATCH] fixes #12193 (#12199) --- compiler/semtempl.nim | 3 +-- tests/template/tgensymregression.nim | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/compiler/semtempl.nim b/compiler/semtempl.nim index 8c39a76763..0b1be5abf8 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 4194e3e888..a743d3a08b 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"])