mirror of
https://github.com/dlang/dmd.git
synced 2025-04-26 13:10:12 +03:00
42 lines
761 B
D
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);
|
|
}
|