summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--compiler/semtempl.nim6
-rw-r--r--tests/gensym/tgensymgeneric.nim14
-rw-r--r--tests/template/mtempl5.nim14
-rw-r--r--tests/template/template_issues.nim10
4 files changed, 34 insertions, 10 deletions
diff --git a/compiler/semtempl.nim b/compiler/semtempl.nim
index 9f39a81ee..bb8748460 100644
--- a/compiler/semtempl.nim
+++ b/compiler/semtempl.nim
@@ -251,15 +251,15 @@ proc semTemplSymbol(c: PContext, n: PNode, s: PSym; isField: bool): PNode =
   of OverloadableSyms:
     result = symChoice(c, n, s, scOpen, isField)
   of skGenericParam:
-    if isField: result = n
+    if isField and sfGenSym in s.flags: result = n
     else: result = newSymNodeTypeDesc(s, n.info)
   of skParam:
     result = n
   of skType:
-    if isField: result = n
+    if isField and sfGenSym in s.flags: result = n
     else: result = newSymNodeTypeDesc(s, n.info)
   else:
-    if isField: result = n
+    if isField and sfGenSym in s.flags: result = n
     else: result = newSymNode(s, n.info)
 
 proc semRoutineInTemplName(c: var TemplCtx, n: PNode): PNode =
diff --git a/tests/gensym/tgensymgeneric.nim b/tests/gensym/tgensymgeneric.nim
index 9963ba808..c17a0715f 100644
--- a/tests/gensym/tgensymgeneric.nim
+++ b/tests/gensym/tgensymgeneric.nim
@@ -40,15 +40,15 @@ doAssert y.x == "abc"
 import macros
 
 static:
-  let sym1   = genSym()
-  let sym2   = genSym()
-  let sym3   = sym1
+  let sym1 = genSym()
+  let sym2 = genSym()
+  let sym3 = sym1
   let nimsym = sym1.symbol
-  doAssert sym1        == sym1
-  doAssert sym2        != sym3
+  doAssert sym1 == sym1
+  doAssert sym2 != sym3
   doAssert sym2.symbol != sym3.symbol
-  doAssert sym3        == sym1
+  doAssert sym3 == sym1
   doAssert sym1.symbol == sym1.symbol
-  doAssert nimsym      == nimsym
+  doAssert nimsym == nimsym
 
 echo "true"
diff --git a/tests/template/mtempl5.nim b/tests/template/mtempl5.nim
index 3c2881764..2cc6f91bc 100644
--- a/tests/template/mtempl5.nim
+++ b/tests/template/mtempl5.nim
@@ -7,4 +7,18 @@ template templ*(): int =
   bind gx, gy
   gx + gy
 
+import json
+
+const
+  codeField = "foobar"
+  messageField = "more"
+
+template trap*(path: string, body: untyped): untyped =
+  #bind codeField, messageField
+  try:
+    body
+  except:
+    let msg = getCurrentExceptionMsg()
+    #debug "Error occurred within RPC ", path = path, errorMessage = msg
+    result = %*{codeField: "SERVER_ERROR", messageField: msg}
 
diff --git a/tests/template/template_issues.nim b/tests/template/template_issues.nim
index b7dd2a1a7..e56d44480 100644
--- a/tests/template/template_issues.nim
+++ b/tests/template/template_issues.nim
@@ -7,6 +7,7 @@ a
 hi
 Hello, World!
 (e: 42)
+hey
 '''
 """
 
@@ -235,3 +236,12 @@ var
   x = X.fails(42)
 
 echo x
+
+import mtempl5
+
+
+proc foo(): auto =
+  trap "foo":
+    echo "hey"
+
+discard foo()