On 28/11/13 17:04, Dicebot wrote:
Oh, oops, I thought your issue is exactly other way around, sorry. That looks
like an issue in assertThrown implementation. probably worth a bugzilla entry.

It's a bit mysterious.  Consider this minimal example:

    unittest
    {
        import std.exception, core.exception;
        assertThrown!AssertError(assert(false));
    }

... which should be fine in non-release mode and (potentially) problematic in release mode. In fact it makes no difference whether you call:

    rdmd -main -unittest -cov assert.d

or

    rdmd -main -unittest -cov -release assert.d

... either works without complaint, which is not what you'd expect: you'd expect assertThrown to report an error in the case of -release mode.

Now, replace the assert(false) in the above with assert(true). This time, in both cases, you get:

core.exception.AssertError@assert.d(4): assertThrown failed: No AssertError was thrown.

... which is kind of in line with expectations, I suppose.

Now, wrap the line in question in version(assert) { ... } -- still fails in both cases.

Now wrap it in version(release) {} else { ... } -- again, still fails with both build/run options.

It's this last one which is really mysterious to me, because it suggests that neither version(assert) nor version(release) is being respected properly.

Reply via email to