summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--compiler/semtempl.nim3
-rw-r--r--tests/template/tgensymregression.nim18
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"])