assert semantic change proposal
Sean Kelly via Digitalmars-d
digitalmars-d at puremagic.com
Wed Aug 6 14:35:25 PDT 2014
On Wednesday, 6 August 2014 at 21:16:42 UTC, David Bregman wrote:
> On Wednesday, 6 August 2014 at 20:27:45 UTC, Sean Kelly wrote:
>> Well, it seems like the underlying idea is to treat assertion
>> failures more strongly than we do now. So changes in how
>> these are handled by the runtime might be a side effect of
>> this proposal.
>
> Again, since Walter's proposal only affects release mode, I
> don't see how exceptions or the runtime are related. What am I
> missing? You agree assertion failures (AssertError) are only
> thrown in debug mode, right?
In non-release mode, but yes. However:
4. An assert failure is a non-recoverable error. The compiler may
assume that
execution does not proceed after one is tripped. The language
does allow
attempts to shut a program down gracefully after one is tripped,
but that must
not be misconstrued as assuming that the program is in a valid
state at that point.
5. assert(0); is equivalent to a halt, and the compiler won't
remove it.
Clearly, the intention is for assertion failures to terminate the
program, but that isn't done now. Or at least this isn't done in
the multithreaded case. So I was asking for clarification on
what should be done on that end, and whether that behavior should
inform how assert is treated from a language perspective.
More information about the Digitalmars-d
mailing list