https://issues.dlang.org/show_bug.cgi?id=17683

          Issue ID: 17683
           Summary: __traits compiles does not work with package.d
           Product: D
           Version: D2
          Hardware: All
                OS: All
            Status: NEW
          Severity: normal
          Priority: P1
         Component: dmd
          Assignee: nob...@puremagic.com
          Reporter: an...@s-e-a-p.de

File m1.d
---------------------------------------

module m1;

import sub;

void main()
{
  import std.traits: fullyQualifiedName;
  mixin(`static assert(__traits(compiles, `~fullyQualifiedName!Bar~`.bar));`);
}


File sub/m2.d
---------------------------------------

module sub.m2;

class Bar
{
    int bar;
}


File sub/package.d
---------------------------------------
module sub;

public import sub.m2;


PS C:\Users\user\Desktop\source> dmd -run m1.d sub/package.d sub/m2.d
m1.d-mixin-9(9): Error: static assert  __traits(compiles, sub.m2.Bar.bar) is
false

While fullyQualifiedName is able to find the symbol Bar, __traits compiles does
not find it. It works if I replace the package.d import with the specific
module m2.d import

Version: DMD32 D Compiler v2.075.0-rc1-master-af3eacf on Windows 10

--

Reply via email to