summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--compiler/semtempl.nim5
-rw-r--r--tests/template/template_issues.nim4
2 files changed, 8 insertions, 1 deletions
diff --git a/compiler/semtempl.nim b/compiler/semtempl.nim
index 85411f7c4..eec028122 100644
--- a/compiler/semtempl.nim
+++ b/compiler/semtempl.nim
@@ -567,6 +567,7 @@ proc semTemplBody(c: var TemplCtx, n: PNode): PNode =
     # so we use the generic code for nkDotExpr too
     let s = qualifiedLookUp(c.c, n, {})
     if s != nil:
+      # mirror the nkIdent case
       # do not symchoice a quoted template parameter (bug #2390):
       if s.owner == c.owner and s.kind == skParam and
           n.kind == nkAccQuoted and n.len == 1:
@@ -578,7 +579,9 @@ proc semTemplBody(c: var TemplCtx, n: PNode): PNode =
       elif contains(c.toMixin, s.name.id):
         return symChoice(c.c, n, s, scForceOpen, c.noGenSym > 0)
       else:
-        return symChoice(c.c, n, s, scOpen, c.noGenSym > 0)
+        if s.kind in {skType, skVar, skLet, skConst}:
+          discard qualifiedLookUp(c.c, n, {checkAmbiguity, checkModule})
+        return semTemplSymbol(c.c, n, s, c.noGenSym > 0)
     if n.kind == nkDotExpr:
       result = n
       result[0] = semTemplBody(c, n[0])
diff --git a/tests/template/template_issues.nim b/tests/template/template_issues.nim
index 58c40941d..5b7c54ed6 100644
--- a/tests/template/template_issues.nim
+++ b/tests/template/template_issues.nim
@@ -302,3 +302,7 @@ block: # bug #21920
     discard
 
   t[void]() # Error: expression has no type: discard
+
+block: # issue #19865
+  template f() = discard default(system.int)
+  f()