On Thursday, 31 July 2014 at 07:42:16 UTC, Walter Bright wrote:
On 7/30/2014 6:16 PM, Dicebot wrote:
On Wednesday, 30 July 2014 at 23:50:51 UTC, H. S. Teoh via
Digitalmars-d wrote:
But if you don't want to check ever to be removed, currently
you have to
write:
if (!requiredCondition)
assert(0); // compiler never removes this
which IMO is relatively clear, and the use of assert(0) for
forceful
termination is consistent with existing practice in D code.
Not helping.
```
import std.stdio;
void foo()
in { writeln("in contract"); }
body { }
void main() { foo(); }
```
Compile with -release and check the output.
What do you expect to happen?
It acts as defined in spec, nothing unexpected here. I was
referring to H. S. Teoh proposed workaround to keep assertions in
release mode - it does not work with contracts because those are
eliminated completely, not just assertions inside.