checkedint call removal

via Digitalmars-d digitalmars-d at puremagic.com
Thu Jul 31 03:15:43 PDT 2014


On Wednesday, 30 July 2014 at 19:17:51 UTC, H. S. Teoh via 
Digitalmars-d wrote:
> On Wed, Jul 30, 2014 at 07:09:41PM +0000, via Digitalmars-d 
> wrote:
>> On Wednesday, 30 July 2014 at 18:25:43 UTC, H. S. Teoh via 
>> Digitalmars-d
>> wrote:
>> >If you want the check to always be there, use enforce, not 
>> >assert.
>> 
>> Doesn't help:
>> 
>>     module a;
>>     void bar(int x) {
>>         assert(x > 0);
>>         writeln("x = ", x);
>>     }
>>     // --------
>>     module b;
>>     import a;
>>     void foo(int x) {
>>         enforce(x > 0);
>>         bar(x);
>>     }
>> 
>> If `assert` is treated like `assume` (under Ola's 
>> definitions), then
>> `enforce` can be optimized away.
>
> Wait, what? I thought the whole point of enforce is that it 
> will *not*
> be removed by the compiler, no matter what?

Unfortunately not under the current definition of assert :-(


More information about the Digitalmars-d mailing list