fixes #21496; Ambiguous calls compiles when module name are equal (#21500)

* fixes #21496; Ambiguous calls compiles when module name are equal

* add a test case

(cherry picked from commit ffadc75afe)
This commit is contained in:
ringabout
2023-03-13 03:03:14 +08:00
committed by narimiran
parent a8c6e36323
commit 48d18df69c
4 changed files with 13 additions and 1 deletions

View File

@@ -311,7 +311,8 @@ proc wrongRedefinition*(c: PContext; info: TLineInfo, s: string;
proc addDeclAt*(c: PContext; scope: PScope, sym: PSym, info: TLineInfo) =
let conflict = scope.addUniqueSym(sym)
if conflict != nil:
if sym.kind == skModule and conflict.kind == skModule and sym.owner == conflict.owner:
if sym.kind == skModule and conflict.kind == skModule and
sym.position == conflict.position:
# e.g.: import foo; import foo
# xxx we could refine this by issuing a different hint for the case
# where a duplicate import happens inside an include.

View File

@@ -0,0 +1 @@
proc fb* = echo "buzz!"

View File

@@ -0,0 +1 @@
proc fb* = echo "fizz!"

9
tests/import/t21496.nim Normal file
View File

@@ -0,0 +1,9 @@
discard """
errormsg: "redefinition of 'm21496'; previous declaration here: t21496.nim(5, 12)"
"""
import fizz/m21496, buzz/m21496
# bug #21496
m21496.fb()