It's a regression from 2.066.0.
Reduced test case:
alias TypeTuple(T...) = T;
template ItemProperty()
{
static if (true)
{
alias ItemProperty = TypeTuple!(ItemProperty!()); // line 14
}
}
void main()
{
alias items = ItemProperty!(); // line 19
enum num = items.length; // line 21
}
Until 2.065, the code had printed:
test.d(14): Error: alias test.ItemProperty!().ItemProperty recursive alias declaration
test.d(19): Error: template instance test.ItemProperty!() error instantiating
But since 2.066, line 19 makes no error, and line 21 will crash the compiler.