On 8/4/15 4:23 PM, Walter Bright wrote:
On 8/4/2015 4:53 AM, Steven Schveighoffer wrote:
Any assert(0) in druntime or phobos with a message printed is an
error. It's
compiled in release mode.

When you're debugging phobos, you aren't compiling in release mode.

Unless you aren't debugging it, but an assert is still triggering. I want to stress, the bug that was found in core.time was environmental, and without the end user debugging it for us, we would never have known what this was, because the message wasn't printed.

I should say, any assert(0) with a message printed that is possible to trigger in release mode is an error. If you can ensure it's only possible to trigger when compiled in debug mode (or for unit tests), then assert(0, msg) is fine.

But I've also been of the opinion, not widely shared, that any
programmer supplied messages in asserts are pointless.

They can be helpful for context if it's not obvious what should have triggered the assert.

for example:

assert(x > y, "x: " ~ x.toString() ~ ", y: " ~ y.toString());

-Steve

Reply via email to