[Issue 302] New: in/out contract inheritance yet to be implemented

d-bugmail at puremagic.com d-bugmail at puremagic.com
Mon Aug 21 02:45:50 PDT 2006


http://d.puremagic.com/issues/show_bug.cgi?id=302

           Summary: in/out contract inheritance yet to be implemented
           Product: D
           Version: 0.165
          Platform: PC
               URL: http://www.digitalmars.com/d/dbc.html
        OS/Version: Windows
            Status: NEW
          Keywords: wrong-code
          Severity: normal
          Priority: P2
         Component: DMD
        AssignedTo: bugzilla at digitalmars.com
        ReportedBy: smjg at iname.com


A long-standing unimplemented feature is inheritance of in/out contracts.  From
the spec:

"If a function in a derived class overrides a function in its super class, then
only one of the in contracts of the function and its base functions must be
satisified. Overriding functions then becomes a process of loosening the in 
contracts.

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
heirarchy [sic] has no in contract, then in contracts on functions overriding
it have no useful effect.

Conversely, all of the out contracts needs [sic] to be satisified, so
overriding functions becomes a processes of tightening the out contracts."

It's about time we finally got this implemented.  A strategy was proposed at
digitalmars.D:31595, "Implementing contract inheritance".

Existing DStress testcases:
http://dstress.kuehne.cn/run/i/in_out_body_10_A.d
http://dstress.kuehne.cn/norun/i/in_out_body_10_B.d
http://dstress.kuehne.cn/norun/i/in_out_body_10_C.d
http://dstress.kuehne.cn/run/i/in_out_body_11_*.d


-- 




More information about the Digitalmars-d-bugs mailing list