Walter Bright:
>> assert(x != NULL);
>>
>> if(x != NULL) {
>>     x->foo = 42;
>>     // ...
>> }
>>...
> Your code is doomed to having problems using assert this way.
That usage of assert is fine. D programs use it that way. (And 
you are going to break lot of D code if you will change the 
semantics of D assert).
Bye,
bearophile