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