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

30 lines
569 B
D

// REQUIRED_ARGS: -o-
// PERMUTE_ARGS:
struct InputRange {}
auto md5OfA(T...)(T ) {}
auto md5OfB(T...)(T ) {}
template fqnSymA(alias T : X!A, alias X, A...)
{
template fqnTuple(B) { enum fqnTuple = 1; }
enum fqnSymA = fqnTuple!A;
}
template fqnSymB(alias T : X!A, alias X, A...)
{
template fqnTuple(B) { enum fqnTuple = 1; }
enum fqnSymB = fqnTuple!A;
}
void test1() // OK <- NG
{
md5OfA(InputRange());
auto n = fqnSymA!(md5OfA!InputRange);
}
void test2() // OK
{
auto n = fqnSymB!(md5OfB!InputRange);
md5OfB(InputRange());
}