summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--compiler/semtypes.nim4
-rw-r--r--tests/template/tparams_gensymed.nim15
2 files changed, 17 insertions, 2 deletions
diff --git a/compiler/semtypes.nim b/compiler/semtypes.nim
index c2aeadc21..6a1c1afc9 100644
--- a/compiler/semtypes.nim
+++ b/compiler/semtypes.nim
@@ -1234,7 +1234,7 @@ proc semProcTypeNode(c: PContext, n, genericParams: PNode,
       if typ == nil:
         typ = def.typ
         if isEmptyContainer(typ):
-          localError(c.config, a.info, "cannot infer the type of parameter '" & a[0].ident.s & "'")
+          localError(c.config, a.info, "cannot infer the type of parameter '" & $a[0] & "'")
 
         if typ.kind == tyTypeDesc:
           # consider a proc such as:
@@ -1265,7 +1265,7 @@ proc semProcTypeNode(c: PContext, n, genericParams: PNode,
       continue
 
     for j in 0..<a.len-2:
-      var arg = newSymG(skParam, a[j], c)
+      var arg = newSymG(skParam, if a[j].kind == nkPragmaExpr: a[j][0] else: a[j], c)
       if not hasType and not hasDefault and kind notin {skTemplate, skMacro}:
         let param = strTableGet(c.signatures, arg.name)
         if param != nil: typ = param.typ
diff --git a/tests/template/tparams_gensymed.nim b/tests/template/tparams_gensymed.nim
index cfd354a74..2a1fda41a 100644
--- a/tests/template/tparams_gensymed.nim
+++ b/tests/template/tparams_gensymed.nim
@@ -15,6 +15,7 @@ wth
 0
 (total: 6)
 S1
+5
 '''
 """
 # bug #1915
@@ -321,3 +322,17 @@ block: #Gensymmed sym sharing forward decl
       newProc(sym, body = newStmtList()),
     )
   genGenMacro
+
+# inject pragma on params
+
+template test(procname, body: untyped): untyped = 
+  proc procname(data {.inject.}: var int = 0) =
+    body
+
+test(hello):
+  echo data
+  data = 3
+
+var data = 5
+
+hello(data)