Mea Culpa

Robert Fraser fraserofthenight at gmail.com
Wed Mar 5 00:02:24 PST 2008


Walter Bright wrote:
> I know that many of you have asked that the compiler diagnose an error for:
> 
>    Class C { }
>    C c;
>    if (c != null)
>        ...
> 
> because it will seg fault at runtime (depending on how opEqual() was 
> written). I resisted because there is no way, in the general case, to 
> detect at compile time if one of the operands will evaluate to null or 
> not. But I finally thought "most of the cases, null is used directly", 
> so I put in a test in the compiler which rejects class == and != with 
> the literal null.
> 
> I found some errors in my own D code with it.
> 
> You guys were right.
> 
> The compiler will now also reject things like:
> 
>     if (c > null)
> 
> which make no sense.

Thanks! But it did help me develop the good habit of always putting null 
on the left hand side of comparison tests.



More information about the Digitalmars-d mailing list