dmd/compiler/test/fail_compilation/fail337.d
2022-07-09 18:53:07 +02:00

42 lines
761 B
D

/*
TEST_OUTPUT:
---
fail_compilation/fail337.d(13): Error: static assert: `0` is false
fail_compilation/fail337.d(26): instantiated from here: `bar!()`
fail_compilation/fail337.d(33): 100 recursive instantiations from here: `foo!196`
fail_compilation/fail337.d(41): 253 recursive instantiations from here: `baz!300`
---
*/
template bar()
{
static assert(0);
}
template foo(int N)
{
static if (N > 0)
{
static if (N & 1)
alias foo!(N - 3) foo;
else
alias foo!(N - 1) foo;
}
else
alias bar!() foo;
}
template baz(int M)
{
static if (M < 50)
{
alias foo!(M * 4) baz;
}
else
alias baz!(M - 1) baz;
}
void main()
{
int x = baz!(300);
}