On Sunday, 7 July 2013 at 13:12:06 UTC, Tommi wrote:
But would it be possible to implement it something like:
[..]
Although, I don't know if the best possible behaviour is to
silently compile the following assert out of existence in release
mode:
version (assert)
{
enum cond = false;
}
void main()
{
assert(cond);
}
A better behaviour probably would be to spew a warning message
asking the user if he's sure he knows what he's doing.
Then, yet another solution (a code breaking one) would be to make
it so that only literally saying:
assert(0);
or
assert(false);
or
assert(null);
...would exhibit that special assert behaviour.
Anything else would be semantically runtime-evaluated and no
other forms of assert would remain in release builds. For
example, this kind of an assert would be compiled out of
existence in release mode:
enum bool cond = false;
assert(cond);