[Bug 140] New: Conflicting identifiers between imported modules are reported in the wrong file
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Sat May 13 14:12:44 PDT 2006
http://d.puremagic.com/bugzilla/show_bug.cgi?id=140
Summary: Conflicting identifiers between imported modules are
reported in the wrong file
Product: D
Version: 0.157
Platform: PC
OS/Version: Windows
Status: NEW
Keywords: diagnostic
Severity: normal
Priority: P2
Component: DMD
AssignedTo: bugzilla at digitalmars.com
ReportedBy: smjg at iname.com
If a module imports two modules, each of which defines the same identifier, and
then tries to use it without specifying which one, then the error is reported
as being in one of the imported modules. This is nonsense.
----- module0.d -----
import module1;
import module2;
void main() {
func();
}
----- module1.d -----
module module1;
void func() {}
----- module2.d -----
module module2;
void func() {}
----------
module1.d(3): function module1.func conflicts with module2.func at module2.d(3)
----------
If two libraries happen to use the same identifier, then this isn't the fault
of either library. The compiler shouldn't be claiming that it is.
In fact, the error is in module0, where the identifier is used. And it's the
author of module0 that needs to resolve the conflict by explicitly specifying
module1.func or module2.func. With the current bad error message, it's an
absolute nightmare to find where the conflict needs resolving.
A suitable error message for this instance would be:
----------
module0.d(5): identifier func matches both
module1.d(3): module1.func
and
module2.d(3): module2.func
----------
Of course, it may be an overloaded function in either or both of the modules.
The line number reported for each match might as well be where the name is
first defined.
If the conflict is between three or more modules, then the message should be
adjusted accordingly.
--
More information about the Digitalmars-d-bugs
mailing list