1 /* PERMUTE_ARGS: 2 */ 3 4 class A 5 { msg()6 @__future char msg() { return 'a'; } 7 } 8 9 class B : A 10 { msg()11 char msg() { return 'b'; } 12 } 13 14 class C : B 15 { msg()16 override char msg() { return 'c'; } 17 } 18 19 class D : A 20 { msg()21 override char msg() { return 'd'; } 22 } 23 main()24int main() 25 { 26 auto a = new A(); 27 assert(a.msg() == 'a'); 28 auto b = new B(); 29 assert(b.msg() == 'b'); 30 auto c = new C(); 31 assert(c.msg() == 'c'); 32 auto d = new D(); 33 assert(d.msg() == 'd'); 34 35 assert(b.A.msg() == 'a'); 36 37 auto ba = cast(A)b; 38 assert(ba.msg() == 'a'); 39 40 auto da = cast(A)d; 41 assert(da.msg() == 'd'); 42 return 0; 43 } 44