diff options
Diffstat (limited to 'compiler')
-rw-r--r-- | compiler/lookups.nim | 6 | ||||
-rw-r--r-- | compiler/semtempl.nim | 2 |
2 files changed, 6 insertions, 2 deletions
diff --git a/compiler/lookups.nim b/compiler/lookups.nim index 52296644d..54eb9741f 100644 --- a/compiler/lookups.nim +++ b/compiler/lookups.nim @@ -584,7 +584,11 @@ proc errorUndeclaredIdentifier*(c: PContext; info: TLineInfo; name: string, extr if name == "_": err = "the special identifier '_' is ignored in declarations and cannot be used" else: - err = "undeclared identifier: '" & name & "'" & extra + err = "undeclared identifier: '" & name & "'" + if "`gensym" in name: + err.add "; if declared in a template, this identifier may be inconsistently marked inject or gensym" + if extra.len != 0: + err.add extra if c.recursiveDep.len > 0: err.add "\nThis might be caused by a recursive module dependency:\n" err.add c.recursiveDep diff --git a/compiler/semtempl.nim b/compiler/semtempl.nim index 10440614d..be1d3e51f 100644 --- a/compiler/semtempl.nim +++ b/compiler/semtempl.nim @@ -261,7 +261,7 @@ proc semRoutineInTemplName(c: var TemplCtx, n: PNode): PNode = if n.kind == nkIdent: let s = qualifiedLookUp(c.c, n, {}) if s != nil: - if s.owner == c.owner and (s.kind == skParam or sfGenSym in s.flags): + if s.owner == c.owner and s.kind == skParam: incl(s.flags, sfUsed) result = newSymNode(s, n.info) onUse(n.info, s) |