mirror of
https://github.com/dlang/dmd.git
synced 2025-04-26 21:21:48 +03:00
46 lines
824 B
D
46 lines
824 B
D
// 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"));
|
|
}
|
|
}
|