On Tuesday, 18 January 2022 at 04:42:45 UTC, frame wrote:
At the very top of my module I have this declaration:```d static if (__VERSION__ >= 2098) { alias Foo = TypeA; } else { alias Foo = TypeB; } ```No problem inside the module itself but this doesn't work when imported from another module:Error: undefined identifier `Foo` While this workaround works: ```d template getAlias() { static if (__VERSION__ >= 2098) { alias getAlias = TypeA; } else { alias getAlias = TypeB; } } alias Foo = getAlias!(); ``` Is there a reason for that?
static ifs and mixins need semantic analysis to expand, but when you import module, the semantic analysis doesn't run yet (depends on order).
Beter workaround is: ```d import std.traits : Select; alias Foo = Select!(__VERSION__ >= 2098, TypeA, TypeB); ```
