digitalmars.D.bugs - [Issue 11065] New: Package-scoped import introduces symbol conflicts
- d-bugmail puremagic.com (50/50) Sep 18 2013 http://d.puremagic.com/issues/show_bug.cgi?id=11065
- d-bugmail puremagic.com (7/7) Sep 18 2013 http://d.puremagic.com/issues/show_bug.cgi?id=11065
- d-bugmail puremagic.com (37/37) Sep 18 2013 http://d.puremagic.com/issues/show_bug.cgi?id=11065
- d-bugmail puremagic.com (18/18) Sep 18 2013 http://d.puremagic.com/issues/show_bug.cgi?id=11065
http://d.puremagic.com/issues/show_bug.cgi?id=11065 Summary: Package-scoped import introduces symbol conflicts Product: D Version: D2 Platform: All OS/Version: All Status: NEW Severity: major Priority: P2 Component: DMD AssignedTo: nobody puremagic.com ReportedBy: andrej.mitrovich gmail.com 14:48:25 PDT --- test.d: ----- module test; import foo; import bar; void main() { auto x = RGB(0, 0, 255); } ----- foo.d: ----- module foo; struct RGB { ubyte r; ubyte g; ubyte b; } ----- bar.d: ----- module bar; package: import core.sys.windows.windows; ----- $ dmd -c test.d test.d(8): Error: foo.RGB at foo.d(4) conflicts with core.sys.windows.win dows.RGB at C:\dmd-git\dmd2\windows\bin\..\..\src\druntime\import\core\sy s\windows\windows.d(3213) If you remove the "package:" specifier, the error is gone. It's also unrelated to whether these modules are actually part of any package structure (the test-case is kept simple here). This does not appear to be a regression (tested up to 2.060). -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Sep 18 2013
http://d.puremagic.com/issues/show_bug.cgi?id=11065 14:49:15 PDT --- Also this test-case is Windows-specific due to the windows import from druntime, I should have removed the dependency in the test-case.. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Sep 18 2013
http://d.puremagic.com/issues/show_bug.cgi?id=11065 14:50:51 PDT --- Here's the new test-case without the win32 dependency: test.d: ----- module test; import foo; import bar; void main() { auto x = RGB(0, 0, 255); } ----- foo.d: ----- module foo; struct RGB { ubyte r, g, b; } ----- bar.d: ----- module bar; package: import doo; ----- doo.d: ----- struct RGB { ubyte r, g, b; } ----- -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Sep 18 2013
http://d.puremagic.com/issues/show_bug.cgi?id=11065 15:03:20 PDT --- The problem of course is that "package" has no real meaning for imports, and should therefore be ignored. In other words, this: ---- package: import abcd; ---- Should not mark the import as a package import (this has no meaning in the spec), it should stay as a private import unless typed differently, e.g.: ---- package: import abcd; // private import void foo() { } // package function ---- -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Sep 18 2013