On Tuesday, 20 June 2017 at 11:57:55 UTC, Mike Parker wrote:
DIP 1009 is titled "Improve Contract Usability".

[...]

Veering a bit off topic,the compiler doesn't treat contracts any different from other code, does it? For instance, consider:

int foo()
out(result; result>0)
{
// whatever
}

int bar(int x)
in (x<0)
{
// whatever
}

int main() {
    return bar(foo());
}

I would have liked to get a *compile-time* error in case of such a trivial contract violation. Of course, I don't expect the compilier to try and prove that a contract holds (seems unrealitic and not so useful) but it would be nice if it could at least spot simple errors, like in the example above.

In a similar vein, the information conveyed in a contract can potentially be used to apply simple optimizations, at least in trivial cases.

If the contract system amounts to placing assertions at the beginning and/or end of a function, it doesn't seem so useful except for documentation and readability.

Reply via email to