dmd/compiler/test/compilable/test23598.d

87 lines
1.2 KiB
D

// https://issues.dlang.org/show_bug.cgi?id=23598
alias AliasSeq(a...) = a;
static if (1)
{
template sort(alias f, a...)
{
static if (a.length > 0)
{
alias x = f!(a[0]);
alias sort = a;
}
else
alias sort = a;
}
alias SortedItems = sort!(isDependencyOf, String);
enum isDependencyOf(Item) = Item.DirectDependencies.length == 0;
struct String
{
alias DirectDependencies = AliasSeq!();
enum l = SortedItems.length; // (3)
}
}
/*****************************************************/
static if (1)
{
enum x = 1;
enum y = 2;
template f(T)
{
alias b = int;
static if (x)
{
alias c = x;
}
else
{
alias c = y;
}
static if (is(typeof(c)))
{
}
else
{
static assert(0);
}
}
void g()
{
int x = f!int.c;
}
}
/*****************************************************/
template forward(args...)
{
template fwd(alias arg)
{
alias fwd = arg;
}
alias Result = AliasSeq!();
static foreach (arg; args)
Result = AliasSeq!(Result, fwd!arg);
static if (Result.length == 1)
alias forward = Result[0];
else
alias forward = Result;
}
void func(int i, int j)
{
func(forward!(i, j));
}