[Issue 20054] getSymbolsByUDA no longer works on modules

d-bugmail at puremagic.com d-bugmail at puremagic.com
Mon Jul 15 13:42:58 UTC 2019


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

Simen Kjaeraas <simen.kjaras at gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |simen.kjaras at gmail.com

--- Comment #1 from Simen Kjaeraas <simen.kjaras at gmail.com> ---
The fix implemented for issue 19105 is just plain wrong, as the issue isn't
fixed:

import std.traits;

struct A(Args...) {}

struct S1 {
    // Recursive template expansion
    alias C = A!( getSymbolsByUDA!(S1, A) );
}
struct S2 {
    // precompute the result:
    alias tmp = getSymbolsByUDA!(S2, A);
    // No recursive template expansion
    alias C = A!( getSymbolsByUDA!(S2, A) );
}

Reduced test case:

template test(alias T) {
    enum i = __traits(compiles, __traits(getMember, T, "C"));
    alias test = int;
}

struct A(Args...) {}

struct S1 {
    // Recursive template expansion
    alias C = A!(test!S1);
}
struct S2 {
    // No error
    alias a = test!S2;
    alias C = A!(test!S2);
}

--


More information about the Digitalmars-d-bugs mailing list