mirror of
https://github.com/nim-lang/Nim.git
synced 2026-02-17 16:38:33 +00:00
* Add `nkFastAsgn` into `semExpr` (#20939) * Add nkFastAsgn into case statement * Add test case * fixes #1027; disallow templates to use ambiguous identifiers (#20631) * test qualifiedLookUp in templates * check later * add testcase * add 4errormsg * Update tests/template/m1027a.nim Co-authored-by: Clay Sweetser <Varriount@users.noreply.github.com> * Update tests/template/m1027b.nim Co-authored-by: Clay Sweetser <Varriount@users.noreply.github.com> Co-authored-by: Andreas Rumpf <rumpf_a@web.de> Co-authored-by: Clay Sweetser <Varriount@users.noreply.github.com> --------- Co-authored-by: Jake Leahy <jake@leahy.dev> Co-authored-by: Andreas Rumpf <rumpf_a@web.de> Co-authored-by: Clay Sweetser <Varriount@users.noreply.github.com>
This commit is contained in:
@@ -380,6 +380,8 @@ proc semTemplBody(c: var TemplCtx, n: PNode): PNode =
|
||||
result = newSymNode(s, n.info)
|
||||
onUse(n.info, s)
|
||||
else:
|
||||
if s.kind in {skType, skVar, skLet, skConst}:
|
||||
discard qualifiedLookUp(c.c, n, {checkAmbiguity, checkModule})
|
||||
result = semTemplSymbol(c.c, n, s, c.noGenSym > 0)
|
||||
of nkBind:
|
||||
result = semTemplBody(c, n[0])
|
||||
|
||||
1
tests/template/m1027a.nim
Normal file
1
tests/template/m1027a.nim
Normal file
@@ -0,0 +1 @@
|
||||
const version_str* = "mod a"
|
||||
1
tests/template/m1027b.nim
Normal file
1
tests/template/m1027b.nim
Normal file
@@ -0,0 +1 @@
|
||||
const version_str* = "mod b"
|
||||
22
tests/template/t1027.nim
Normal file
22
tests/template/t1027.nim
Normal file
@@ -0,0 +1,22 @@
|
||||
discard """
|
||||
cmd: "nim check --hints:off $file"
|
||||
errormsg: ""
|
||||
nimout: '''
|
||||
t1027.nim(20, 19) Error: ambiguous identifier: 'version_str' -- use one of the following:
|
||||
m1027a.version_str: string
|
||||
m1027b.version_str: string
|
||||
'''
|
||||
"""
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
import m1027a, m1027b
|
||||
|
||||
# bug #1027
|
||||
template wrap_me(stuff): untyped =
|
||||
echo "Using " & version_str
|
||||
|
||||
wrap_me("hey")
|
||||
Reference in New Issue
Block a user