http://d.puremagic.com/issues/show_bug.cgi?id=8366
--- Comment #6 from Kenji Hara <[email protected]> 2013-01-13 17:45:09 PST --- (In reply to comment #5) > What's the state of this? I'm getting different error messages, such as: > > Deprecation: class test.C use of object.Object.opEquals(Object o) hidden by C > is deprecated. Use 'alias Object.opEquals opEquals;' to introduce base class > overload set. > > Is that ok? No. In 2.060 release, all Object class method signatures are reverted, so the original code is not correct in current. More generic case is: class B { bool foo(in Object o) const { return true; } } class C : B { bool foo(in Object o) { return true; } // line 10 override bool foo(in Object o) const { return false; } // line 12 } void main() { C mc = new C(); const C cc = new C(); B mb = mc; const B cb = cc; assert(mc.foo(null) == true); assert(cc.foo(null) == false); assert(mb.foo(null) == false); assert(cb.foo(null) == false); } This code should compile but outputs: --- test.d(10): Deprecation: overriding base class function without using override attribute is deprecated (test.C.foo overrides test.B.foo) test.d(12): Error: function test.C.foo multiple overrides of same function Mutable foo in class C is incorrectly overrides const foo in class B. That is the bug. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
