On Wednesday, 21 June 2017 at 14:49:09 UTC, Moritz Maxeiner wrote:
On Wednesday, 21 June 2017 at 13:24:24 UTC, MysticZach wrote:

So weird how this discussion is happening in parallel with this other discussion :-) :

http://forum.dlang.org/post/rkdpuuggltowhqmcm...@forum.dlang.org

It is, though as I have pointer out over there, I would really like to decouple assert semantics from the new contract semantics to achieve the maximum elegance we can within the design limits of the language.

Well I'd be just as happy expanding the design limits of the language, i.e. `assert`, if that were a better option. The issue you raise is just how different are `in` and `out` contracts from regular `assert` contracts. They _are_ all listed in the same section of the documentation [1], for whatever that's worth.

The practical question is whether one can assume that the same semantics used for `assert`, whatever they may be, will in all cases be desirable for `in` and `out` too. The flexibility of decoupling them is one solution, if they are clearly sufficiently different. But another option is simply to upgrade `assert` to make sure it offers what everyone wants. I don't know what to suggest, because I don't if `assert` can be made good enough to warrant direct inclusion into the grammar. If it could, then all contracts, including plain `assert` statements, would benefit from them.

[1] https://dlang.org/spec/contracts.html

Reply via email to