blob: e8dad45a4017197e2193d684f17d341a60d6fdfc [file] [log] [blame]
// https://issues.dlang.org/show_bug.cgi?id=20894
mixin template MT()
{
int a;
alias b = char;
void c() {}
}
struct S
{
mixin MT mt;
}
void main()
{
auto r = S();
enum c = S();
foo!(S.mt);
foo!(r.mt);
foo!(c.mt); // OK <- ICE
foo!(mixin("S.mt"));
foo!(mixin("r.mt")); // OK <- ICE
foo!(mixin("c.mt")); // OK <- ICE
// some checks
foo!(r.mt, c.mt);
foo!(mixin("r.mt"), c.mt);
foo!(r.mt, mixin("c.mt"));
foo!(S.mt, mixin("c.mt"));
}
alias Tup(T...) = T;
void foo(A...)()
{
static if (A.length == 2)
{
static assert(__traits(isSame, A[0], A[1]));
enum members = __traits(allMembers, A[0]);
static assert(members == __traits(allMembers, A[1]));
static assert(members == Tup!("a", "b", "c"));
}
}