Bug 3845 – [module system] A problem caused by duplicated import

Status
RESOLVED
Resolution
WORKSFORME
Severity
minor
Priority
P2
Component
dmd
Product
D
Version
D2
Platform
All
OS
All
Creation time
2010-02-23T17:48:00Z
Last change time
2015-06-09T01:27:38Z
Assigned to
nobody
Creator
bearophile_hugs

Comments

Comment #0 by bearophile_hugs — 2010-02-23T17:48:22Z
A small problem in the module system. To see this problem you need 3 source files, named test1.d, mod1.d, mod2.d: ----------------- module mod1; import std.string: join; import std.string: join; ----------------- module mod2; import std.string: join; ----------------- The main module is test1.d: module test1; import mod1, mod2; void main() { join(["a"], ""); } ----------------- Got, DMD output: test1.d(4): Error: mod1.join at mod1.d(2) conflicts with mod2.join at mod2.d(2) Expected: No errors, or an error in mod1 of duplicated import statement. Note: in real code with many imports it's easy enough to import two times the same name from the same module.
Comment #1 by bearophile_hugs — 2010-08-01T15:10:51Z
See also bug 4563
Comment #2 by code — 2012-02-14T05:52:16Z
cat > mod1.d << CODE module mod1; import std.string: join; import std.string: join; CODE cat > mod2.d << CODE module mod2; import std.string: join; CODE cat > test1.d << CODE module test1; import mod1, mod2; void main() { join(["a"], ""); } CODE dmd -c test1.d ------- mod1.d(2): Error: alias mod1.join conflicts with alias mod1.join at mod1.d(3) ^--- mod1 It's complaining about: import std.string: join; import std.string: join;