mirror of
https://github.com/dlang/dmd.git
synced 2025-04-26 21:21:48 +03:00
61 lines
994 B
D
61 lines
994 B
D
//https://issues.dlang.org/show_bug.cgi?id=19729
|
|
// PERMUTE_ARGS:
|
|
module test19729;
|
|
|
|
mixin template Templ(T)
|
|
{
|
|
this(T t)
|
|
{
|
|
}
|
|
}
|
|
|
|
class C // original TC
|
|
{
|
|
mixin Templ!int;
|
|
mixin Templ!string;
|
|
}
|
|
|
|
class D // named
|
|
{
|
|
mixin Templ!int ti;
|
|
mixin Templ!string ts;
|
|
}
|
|
|
|
class E // top level ctor wins
|
|
{
|
|
bool topLevelWins;
|
|
mixin Templ!int;
|
|
this(int){topLevelWins = true;}
|
|
}
|
|
|
|
class F // top level ctor wins even if not exact match
|
|
{
|
|
bool topLevelWins;
|
|
mixin Templ!ubyte;
|
|
this(int){topLevelWins = true;}
|
|
}
|
|
|
|
class G // same as F but change lexicographical order
|
|
{
|
|
bool topLevelWins;
|
|
this(int){topLevelWins = true;}
|
|
mixin Templ!ubyte;
|
|
}
|
|
|
|
void main()
|
|
{
|
|
auto c0 = new C("should work");
|
|
auto c1 = new C(42);
|
|
|
|
auto d0 = new D("should work");
|
|
auto d1 = new D(42);
|
|
|
|
auto e = new E(0);
|
|
assert(e.topLevelWins);
|
|
|
|
auto f = new F(ubyte(0));
|
|
assert(f.topLevelWins);
|
|
|
|
auto g = new G(ubyte(0));
|
|
assert(g.topLevelWins);
|
|
}
|