traits compiles does not work for symbols from other modules

Andre Pany via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Tue Jul 25 04:46:45 PDT 2017


On Tuesday, 25 July 2017 at 11:34:23 UTC, Andre Pany wrote:
> On Tuesday, 25 July 2017 at 08:30:43 UTC, ag0aep6g wrote:
>> Works for me. What compiler are you using?
>
> I reduced the example too lot. The issue is occuring if there 
> is also a package.d is involved.
>
> m1.d
> -----------------------
>
> module m1;
>
> import sub; // Does not throw if replaced with: import sub.m2;
>
> class Foo
> {
> 	int foo;
> }
>
> void main()
> {
> 	static assert(__traits(compiles, m1.Foo.foo));
> 	mixin(`static assert(__traits(compiles, sub.m2.Bar.bar));`);
> }
>
> sub/m2.d
> ----------------------
>
> module sub.m2;
>
> class Bar
> {
> 	int bar;
> }
>
> sub/package.d
> ----------------------
>
> module sub;
>
> public import sub.m2;
>
>
> I use DMD master (as I already need the static foreach) on 
> windows 10.
> DMD32 D Compiler v2.075.0-rc1-master-af3eacf
>
>>> [...]
>
> Kind regards
> André

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

Is there a known workaround?

Kind regards
André


More information about the Digitalmars-d-learn mailing list