Improve "Improve Contract Syntax" DIP 1009

Ola Fosheim Grøstad ola.fosheim.grostad+dlang at gmail.com
Sat Nov 4 23:25:08 UTC 2017


On Saturday, 4 November 2017 at 16:57:50 UTC, Adam D. Ruppe wrote:
> On Saturday, 4 November 2017 at 15:27:39 UTC, Ola Fosheim 
> Grøstad wrote:
>> No, Jonathan is correct. The postcondition should be able to 
>> access values as they were stated in the precondition.
>
> Yes, they should be able to access values, but D's limitations 
> on this doesn't make them useless or replaced by unittests. 
> They do a different job than unittests.

But then they do a job that subtyping does better…? So why do 
this with "contracts"?

Anyhow, I think the ideal for contracts in terms of debugging is 
to express postconditions in terms of public interface rather 
than internal representation, e.g. for a stack push:

oldthis.size() + 1 == newthis.size()  // or length() or whatever 
the interface provides

Then hammer the interface in unit tests rather than writing the 
explicit test in the unit test itself. (e.g. the unit test does 
not have to know the conditions, just explore a wide range of 
configurations).




More information about the Digitalmars-d mailing list