checkedint call removal
Daniel Gibson via Digitalmars-d
digitalmars-d at puremagic.com
Thu Jul 31 14:11:38 PDT 2014
Am 31.07.2014 22:57, schrieb Andrei Alexandrescu:
> On 7/31/14, 12:37 PM, Daniel Gibson wrote:
>>
>> This thread however shows that many D users (who probably have more D
>> experience than myself) are not aware that assert() may influence
>> optimization and would prefer to have separate syntax to tell the
>> optimizer what values he can expect.
>
> Yah, I think that's a good outcome. We must document assert better. --
> Andrei
You should have done so 10 years ago.. experienced D coders (that don't
follow this discussion) probably won't look up what exactly assert()
does again and and code will silently break in subtle ways once the
optimizer uses assert()
But if you (as in "the D language implementors") *really* decide to
stick to this unexpected meaning of assert(), you should indeed document
this as soon as a proper definition of what assert() does and might do
in the future, when enforce() vs assert() should be used.
Maybe, besides enforce() and assert() there could be a check() that:
* returns true if the condition is true
* throws an exception in debug mode if the condition is false
* returns false in release mode if the condition is false
could be introduced.
It could be used like
if(check(x !is null, "x must not be null")) {
// .. do something with x ..
}
to cater the usecase of "in debugmode I want to know about this
problem/behavior immediately to debug it, but in releasemode I want to
handle it gracefully".
Cheers,
Daniel
More information about the Digitalmars-d
mailing list