Skip to content

Commit

Permalink
fixes nim-lang#1027; disallow templates to use ambiguous identifiers (n…
Browse files Browse the repository at this point in the history
…im-lang#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>
  • Loading branch information
3 people authored and capocasa committed Mar 31, 2023
1 parent c6a38d5 commit 12b0e42
Show file tree
Hide file tree
Showing 4 changed files with 26 additions and 0 deletions.
2 changes: 2 additions & 0 deletions compiler/semtempl.nim
Original file line number Diff line number Diff line change
Expand Up @@ -376,6 +376,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])
Expand Down
1 change: 1 addition & 0 deletions tests/template/m1027a.nim
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
const version_str* = "mod a"
1 change: 1 addition & 0 deletions tests/template/m1027b.nim
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
const version_str* = "mod b"
22 changes: 22 additions & 0 deletions tests/template/t1027.nim
Original file line number Diff line number Diff line change
@@ -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")

0 comments on commit 12b0e42

Please sign in to comment.