dustmite minimized example (probably could be minimized a bit further):
```
template AllMembersInModule(alias Module) {
import std: AliasSeq, Filter;
alias all_members = AliasSeq!(__traits(allMembers, Module));
template CanAccess(string member) {
enum CanAccess = __traits(compiles, __traits(getMember, Module, member));
}
alias x = Filter!(CanAccess, all_members);
alias AllMembersInModule = y;
}
template t() {
alias MODULE = __traits(parent, {});
static foreach (M; AllMembersInModule!MODULE) {
}
}
alias AllMembers = AllMembersInModule!(__traits(parent, {}));
mixin t;
```
The issue here is a typo: `y` should be `x`, but we get an unknown error instead.
If I remove `alias AllMembers` it works as expected.
BTW, if I remove `mixin t` line, it compiles without error, is it expected, are aliases lazy?
Comment #1 by nick — 2024-11-13T16:34:33Z
I couldn't reduce it any more than this:
```
template AllMembersInModule(alias Module) {
import std.meta : Filter;
alias all_members = __traits(allMembers, Module);
template CanAccess(string member) {
enum CanAccess = __traits(compiles, __traits(getMember, Module, member));
}
alias x = Filter!(CanAccess, all_members);
alias AllMembersInModule = y;
}
alias AllMembers = AllMembersInModule!(__traits(parent, {}));
pragma(msg, AllMembers); // added
```
Error: unknown, please file report on issues.dlang.org
aliastypo.d(15): while evaluating `pragma(msg, AllMembers)`
Comment #2 by robert.schadek — 2024-12-13T19:38:30Z