Johan Engelen wrote:
This code no longer compiles (regression since 2.072, [1]):
```
module example;
import std.meta: staticIndexOf;
struct Attrib {}
@Attrib enum TEST = 123;
void foo() {
foreach(name; __traits(allMembers, example)) {
pragma(msg, name);
pragma(msg, __traits(getAttributes, __traits(getMember, example,
name)));
}
}
```
Does anybody know a workaround? (the intent is to loop over all module
members that have a certain UDA applied)
It's currently blocking Weka from updating to a newer compiler. :(
You can play with code live here: https://godbolt.org/g/G8Yw59
Switch between LDC 1.1.0 (dlang 2.071) and LDC 1.2.0 (dlang 2.072).
Thanks,
Johan
[1] https://issues.dlang.org/show_bug.cgi?id=17545
`std.traits.getSymbolsByUDA()` will allow to select all symbols with the
given UDA. yet you'll still have `123` instead of a `TEST` as a result.
i'm not sure that this is a real bug, tho: such enums doesn't meant to
exist as separate entities, they meant to be macro-like, pasting their
value.
i.e. i myself wont complain, but i may be completely wrong here, and this
may be a real bug.