checkedint call removal

Artur Skawina via Digitalmars-d digitalmars-d at puremagic.com
Sat Aug 2 13:06:54 PDT 2014


On 08/02/14 21:19, Walter Bright via Digitalmars-d wrote:
> On 8/2/2014 6:20 AM, Artur Skawina via Digitalmars-d wrote:
>> The bug was _introduced_ by the assert, the code was 100% correct.
> 
> Asserts are part of the code, and writing incorrect asserts is writing buggy code.

This was about incorrect asserts from one part of the program infecting
other (correct) parts. Nobody is saying that such a program isn't buggy.
Most, if not all, programs have bugs. Your assert (re-)definition makes
the assert /assumptions/, which are unchecked in release builds, _override_
other explicit checks. A wrong assert is not necessarily less likely than
wrong code.

There's nothing wrong with `assume`, it's very useful for optimizations.
But it's too dangerous to tack `assume` onto `assert`. If they are kept
separate then it's at least possible to carefully audit every 'assume'.
People *will* use them for micro-optimizations, and they *will* make
mistakes.

artur


More information about the Digitalmars-d mailing list