Mea Culpa

Walter Bright newshound1 at digitalmars.com
Tue Mar 4 22:56:24 PST 2008


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.



More information about the Digitalmars-d mailing list