16 template MixinAbstractBar() { abstract void bar(); }
20 // Use pragma instead of static assert, in order to evaluate
21 // __traits during ClassDeclaration.semantic().
22 pragma(msg, "1: ", __traits(isAbstractClass, typeof(this)));
23 override void foo() {}
28 pragma(msg, "2: ", __traits(isAbstractClass, typeof(this)));
29 override void foo() {}
35 pragma(msg, "3: ", __traits(isAbstractClass, typeof(this)));
36 override void foo() {}
37 mixin MixinAbstractBar!();
42 static assert( __traits(compiles, { auto b = new B1(); }));
43 static assert(!__traits(compiles, { auto b = new B2(); }));
44 static assert(!__traits(compiles, { auto b = new B3(); }));
49 // __traits(isAbstractClass) is not usable in static if condition.
50 static assert (!__traits(isAbstractClass, typeof(this)));