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