On Thursday, 22 June 2017 at 12:21:29 UTC, MysticZach wrote:
I start to get the nagging feeling that your point about the
limitation in D's DbC implementation is actually the fatal flaw
here. It's currently _illegal_ (outside of interface
declarations) to expose the signature separately from the body,
which, as you point out, is more or less the whole point of
DbC. <shrug> The existing system is itself distinctly _worse_
than just writing out asserts manually... and as far as I can
tell, none of the alternative syntaxes is a decisive
improvement over it. Yours looks the best, but implying
`assert` in the grammar seems to be going too far, especially
for a DbC system that is only half functional. If the `assert`
system were made more user-definable, it would make more sense.
Do you agree with me on this?
Plans to improve `assert` are already in the air. Maybe we
should wait on them before promoting your suggestion?
Conversely, as Moritz suggests, contracts could have their own
separate logic, with optional user-defined hooks. Do you have a
suggestion on how to implement this behind the scenes?