What about calling onAssertError *after* the assert error is caught in the
runtime (outside main)? That gives you a way to handle unit test failures by
e.g. logging them somewhere. At least it's better than nothing.
-Steve
>________________________________
> From: Sean Kelly <[email protected]>
>To: Discuss the internals of DMD <[email protected]>
>Sent: Monday, March 12, 2012 5:29 PM
>Subject: Re: [dmd-internals] Throwing Errors
>
>On Mar 12, 2012, at 1:13 PM, Jacob Carlborg wrote:
>
>> On 12 mar 2012, at 21:06, Alex wrote:
>>
>>> It would be hard to write a framework around D unit tests, for
>>> instance, where you need to catch AssertErrors if things weren't
>>> cleaned up properly (or if it just called abort()). That's just the
>>> first thing that comes to mind.
>>
>> I completely agree. That's what I've been discussion in the "learn"
>> newsgroup. I had a look through the source code of druntime and found
>> "onAssertError". I don't know if it's used or not but sounds exactly like
>> the function I need. But unfortunately the function to set the assert
>> handler is deprecated.
>>
>> http://dlang.org/phobos/core_exception.html#onAssertError
>> http://dlang.org/phobos/core_exception.html#setAssertHandler
>
>The handler is deprecated because DMD doesn't generate a valid call stack for
>_d_assert (which calls onAssertError) so it's impossible to return from the
>assert handler without throwing. This rendered the assert handler largely
>useless and after a few years of no one using it I decided to deprecate it.
>I'd be happy to keep the assert handler if people actually want it though, or
>if DMD changes its codegen. Personally, I'd like to be able to assert without
>throwing in some testing situations, and overriding a handler seems like an
>appropriate way to do this.
>_______________________________________________
>dmd-internals mailing list
>[email protected]
>http://lists.puremagic.com/mailman/listinfo/dmd-internals
>
>
>
_______________________________________________
dmd-internals mailing list
[email protected]
http://lists.puremagic.com/mailman/listinfo/dmd-internals