A problem with D contracts

bearophile bearophileHUGS at lycos.com
Sun Aug 1 05:04:26 PDT 2010


Walter Bright:
> > /*@ assert (\forall int i; 0 <= i && i < n; a[i] != null);
> 
> This does not make it simpler, it just makes things more complicated by now 
> having two ways to do a foreach.

The point here is to restrict a lot the kind of code and instructions you can put inside contracts, so eventually you will have a chance to test them automatically.

When you have copied Eiffel to design D contracts you probably have seen that in Eiffel you can't put arbitrary code inside contracts (the same is true for contract systems in C# and Java, here it's D that is designed in the wrong way). This is a limit that was there because otherwise it kills the possibility of enforcing them statically.

Bye,
bearophile


More information about the Digitalmars-d mailing list