http://d.puremagic.com/issues/show_bug.cgi?id=4088

           Summary: opEquals not called on interfaces
           Product: D
           Version: 2.041
          Platform: Other
        OS/Version: All
            Status: NEW
          Severity: blocker
          Priority: P2
         Component: DMD
        AssignedTo: nob...@puremagic.com
        ReportedBy: schvei...@yahoo.com


--- Comment #0 from Steven Schveighoffer <schvei...@yahoo.com> 2010-04-13 
16:33:39 PDT ---
Given an interface that defines opEquals, the compiler will prefer to call the
object.opEquals(Object, Object) on it.  However, interfaces don't implicitly
cast to Objects thanks to COM.

example:

interface I
{
    bool opEquals(I other);
}

bool foo(I i1, I i2)
{
    return i1 == i2;
}

testopequals.d(8): Error: function object.opEquals (Object lhs, Object rhs) is
not callable using argument types (I,I)
testopequals.d(8): Error: cannot implicitly convert expression (i1) of type
testopequals.I to object.Object
testopequals.d(8): Error: cannot implicitly convert expression (i2) of type
testopequals.I to object.Object

And can someone add 2.042 and 2.043 to the version list? This is tested on
2.043.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------

Reply via email to