<div dir="ltr">2013/3/10 Jonathan M Davis <span dir="ltr"><<a href="mailto:jmdavisProg@gmx.com" target="_blank">jmdavisProg@gmx.com</a>></span><br><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div class=""><div class="h5">On Saturday, March 09, 2013 21:00:07 Simen Kjærås wrote:<br>
> On Sat, 09 Mar 2013 16:28:50 +0100, kenji hara <<a href="mailto:k.hara.pg@gmail.com">k.hara.pg@gmail.com</a>> wrote:<br>
> > I don't know why following. Can someone answer?<br>
> ><br>
> > 1. Object.opEquals(Object lhs, Object.rhs)<br>
> ><br>
> > It seems to me that nobody uses it. Why it exists?<br>
> ><br>
> > 2. object.opEquals(TypeInfo lhs, TypeInfo rhs)<br>
> ><br>
> > It might be used to hack for typeid(x) == typeid(y), but I'm not sure.<br>
> > That is much ambiguous, and if it's really used, we should move it to<br>
> > static TypeInfo.equals and explicitly use it by the name.<br>
> ><br>
> > Kenji Hara<br>
><br>
> I might be misremembering, but I seem to recall objA == objB is rewritten<br>
> into Object.opEquals(objA, objB). Object.opEquals(Object lhs, Object rhs)<br>
> then does the actual two-way comparison of objA.opEquals(objB) &&<br>
> objB.opEquals(objA).<br>
<br>
</div></div>I believe that that rewrite uses the free function opEquals in object_.d, and<br>
not the one on Object. To make matters even more bizarre, the one on Object<br>
isn't even static. I suspect that the one on Object can and should be axed.<br>
The way it's written is nonsensical, and AFAIK, it's never used.<br>
<br>
Of course, the opEquals stuff does need to be revamped a bit anyway, since we'd<br>
decided that we want to move towards getting rid of opEquals, opCmp, toHash,<br>
and toString on Object, which in the case of opEquals means templatizing the<br>
opEquals free function and make it so that it doesn't use Object at all.<br></blockquote><div><br></div><div style>For #2,  I found this issue and commit.</div><div style><a href="http://d.puremagic.com/issues/show_bug.cgi?id=3917">http://d.puremagic.com/issues/show_bug.cgi?id=3917</a><br>
</div><div style><a href="https://github.com/D-Programming-Language/druntime/commit/8409adbbb6bde641bd2b852637016068d22c6756">https://github.com/D-Programming-Language/druntime/commit/8409adbbb6bde641bd2b852637016068d22c6756</a><br>
</div><div style><br></div><div style>As far as I see, object.opEquals(TypeInfo lhs, TypeInfo rhs) is redundant and never used.</div><div style><br></div><div style>But for #1, I found the commit that was added, but I still cannot understand why it was done.</div>
<div style><a href="https://github.com/D-Programming-Language/druntime/commit/1e7ddf0425050e4f184532ec1d99316c37a8b2eb">https://github.com/D-Programming-Language/druntime/commit/1e7ddf0425050e4f184532ec1d99316c37a8b2eb</a><br>
</div><div style><br></div><div style>Kenji Hara</div></div></div></div>