InternetAddress comparison fail

Steven Schveighoffer via Digitalmars-d digitalmars-d at puremagic.com
Fri Jan 2 22:01:24 PST 2015


On 1/3/15 12:51 AM, Jon wrote:
> On Saturday, 3 January 2015 at 05:40:33 UTC, Steven Schveighoffer wrote:
>> On 1/3/15 12:32 AM, Jon wrote:
>>
>>> Still, shouldn't the == operator do a deep compare of the two
>>> InternetAddress objects in the absence of a defined opEquals method? I
>>> don't see why it should fail in the above example.
>>
>> InternetAddress is a class. Default comparison for class is identity
>> (refer to the same object).
>>
>> -Steve
>
> Thanks for clearing that up - it's been a while since I've played with
> D. Maybe back in D1 it did a deep compare?
>
> The docs still refer to == as doing a comparison of the object's
> contents though, unless I'm misreading it.
>
> Under http://dlang.org/expression: "For class objects, the == and !=
> operators compare the contents of the objects." Maybe this needs to be
> updated.

I can see how the wording is confusing, but that statement is somewhat 
out of context. What it really means is that == and != *should* be 
comparing the contents.

It is an explanatory statement as to why you cannot call

obj == null;

Because this translates to obj.opEquals(null), if obj is null, then it 
crashes (well, at least it used to).

The true definition of the default is here:

https://github.com/schveiguy/druntime/blob/master/src/object_.d#L107

-Steve


More information about the Digitalmars-d mailing list