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









d-bugmail puremagic.com 