www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 3722] New: A method without an in contract should always succeed, even if overridden

reply d-bugmail puremagic.com writes:
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



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.
If I add an explicit empty in-contract to Base.method: void method() in{} body{} then it passes the check. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jan 19 2010
next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=3722


yebblies <yebblies gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |patch, wrong-code
                 CC|                            |yebblies gmail.com
           Platform|Other                       |All



https://github.com/D-Programming-Language/dmd/pull/192

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Jul 02 2011
prev sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=3722


Walter Bright <bugzilla digitalmars.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
                 CC|                            |bugzilla digitalmars.com
         Resolution|                            |FIXED



02:21:33 PDT ---
https://github.com/D-Programming-Language/dmd/commit/1de48286f27eeb58231ab033d35385f06bf0e578

https://github.com/D-Programming-Language/dmd/commit/f2722bf1b96c024141698edfb01894578590a546

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Jul 03 2011