|
Archives
D Programming
digitalmars.Ddigitalmars.D.bugs digitalmars.D.dtl digitalmars.D.ide digitalmars.D.dwt digitalmars.D.announce digitalmars.D.learn digitalmars.D.debugger D.gnu D C/C++ Programming
c++c++.announce c++.atl c++.beta c++.chat c++.command-line c++.dos c++.dos.16-bits c++.dos.32-bits c++.idde c++.mfc c++.rtl c++.stl c++.stl.hp c++.stl.port c++.stl.sgi c++.stlsoft c++.windows c++.windows.16-bits c++.windows.32-bits c++.wxwindows digitalmars.empire digitalmars.DMDScript electronics |
digitalmars.D.bugs - [Issue 3722] New: A method without an in contract should always succeed, even if overridden
http://d.puremagic.com/issues/show_bug.cgi?id=3722 Summary: A method without an in contract should always succeed, even if overridden Product: D Version: 2.039 Platform: Other OS/Version: All Status: NEW Severity: normal Priority: P2 Component: DMD AssignedTo: nobody puremagic.com ReportedBy: kiki kmonos.net --- Comment #0 from Kazuhiro Inaba <kiki kmonos.net> 2010-01-19 01:25:04 PST --- In dmd 2.039, the following code fails to pass the in-contract. class Base { void method() {} } class Derived : Base { void method() in { assert(false); } body {} } void main() { Base b = new Derived; b.method(); } But, according to the spec, IIUC, it should successfully pass the check.A function without an in contract means that any values of the function parameters are allowed. This implies that if any function in an inheritance hierarchy has no in contract, then in contracts on functions overriding it have no useful effect. Jan 19 2010
|