assume, assert, enforce, @safe

Jonathan M Davis via Digitalmars-d digitalmars-d at puremagic.com
Thu Jul 31 12:39:54 PDT 2014


On Thursday, 31 July 2014 at 19:36:34 UTC, H. S. Teoh via 
Digitalmars-d wrote:
> On Thu, Jul 31, 2014 at 03:43:48PM -0300, Ary Borenszweig via 
> Digitalmars-d wrote:
>> On 7/31/14, 4:37 AM, Walter Bright wrote:
>> >On 7/30/2014 4:05 PM, Ary Borenszweig wrote:
>> >>On 7/30/14, 7:01 PM, Walter Bright wrote:
>> >>>I'd like to sum up my position and intent on all this.
>> >>>
>> >>>7. using enforce() to check for program bugs is utterly 
>> >>>wrong.
>> >>>enforce() is a library creation, the core language does not
>> >>>recognize it.
>> >>
>> >>What do you suggest to use to check program bugs?
>> >
>> >assert()
>> 
>> Then you are potentially releasing programs with bugs that are 
>> of
>> undefined behavior, instead of halting the program immediately.
>
> Isn't that already what you're doing with the current behaviour 
> of
> assert? Not only in D, but also in C/C++.

Yes, but I think that his point was that he wants a way to check 
programming bugs in release mode, and Walter was saying not to 
use enforce for checking programming bugs. So, that leaves the 
question of how to check them in release mode, since assertions 
won't work in release mode. But the answer to that is normally to 
not compile in release mode. And I believe that dmd gives enough 
control over that that you can get everything that -release does 
without disabling assertions using flags other than -release.

- Jonathan M Davis


More information about the Digitalmars-d mailing list