Shortcut evaluation for hierarchy of in contracts

Jens Mueller jens.k.mueller at gmx.de
Thu Jun 30 03:42:57 PDT 2011


bearophile wrote:
> Jens Mueller:
> 
> > unittest {
> >     class Base {
> >         void foo(uint i)
> >             in { assert(i <= 10); }
> >         body { }
> >     }
> >     
> >     class Sub : Base {   
> >         override void foo(uint i)
> >             in { assert(i <= 5); } // fails to require less but I won't know
> >         body
> >         {
> >             assert(i <= 5); // fails here because in contract wasn't checked
> >         }
> >     }
> >     
> >     auto s = new Sub;
> >     //s.foo(10); // fails as expected
> >     s.foo(7); // due to shortcut evaluation of in contracts this call passes all contracts
> > }
> 
> I think it's a DMD bug, fit for Bugzilla if not already present.

The shortcut evaluation is specified in TDPL. That's why I assume the
behavior is intended.

Jens


More information about the Digitalmars-d mailing list