On Wednesday, 21 June 2017 at 17:38:02 UTC, Moritz Maxeiner wrote:
But another option is simply to upgrade `assert` to make sure it offers what everyone wants.

That would be really cool, but I doubt it will be feasible here. I think that in this case it will more likely end up with everyone hating that universal solution equally.

Well the universal solution could be, for example, the suggestions from my post in the other thread:

3. Allow an additional compiler flag for more informative, but heavier asserts, e.g. `-release=informativeAsserts`.

4. Allow a pragma in the code, e.g. `pragma(asserts, none/regular/informative)` for what kinds of asserts are to be used at a given moment.

This would be added flexibility, rather than a one-size-fits-all solution. So the word "universal" is a little deceptive. The options could also include a user-defined hook for assert.

Question: If `assert` itself allowed a user-defined hook, what would the remaining justification be for decoupling `in` and `out` contracts from the `assert` logic?

That's what I mean by thinking the problem might be fixable by upgrading `assert`.

Reply via email to