/* PERMUTE_ARGS: * TEST_OUTPUT: --- compilable/future.d(15): Deprecation: @future base class method future.A.msg is being overridden by future.B.msg; rename the latter --- */ class A { @__future char msg() { return 'a'; } } class B : A { char msg() { return 'b'; } } class C : B { override char msg() { return 'c'; } } class D : A { override char msg() { return 'd'; } } int main() { auto a = new A(); assert(a.msg() == 'a'); auto b = new B(); assert(b.msg() == 'b'); auto c = new C(); assert(c.msg() == 'c'); auto d = new D(); assert(d.msg() == 'd'); assert(b.A.msg() == 'a'); auto ba = cast(A)b; assert(ba.msg() == 'a'); auto da = cast(A)d; assert(da.msg() == 'd'); return 0; }