[Issue 3789] Structs members that require non-bitwise comparison not correctly compared

d-bugmail at puremagic.com d-bugmail at puremagic.com
Fri Oct 14 02:47:04 PDT 2011


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


Kenji Hara <k.hara.pg at gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Platform|Other                       |All
         Depends on|                            |1824


--- Comment #11 from Kenji Hara <k.hara.pg at gmail.com> 2011-10-14 02:46:10 PDT ---
Test case.

void main()
{
    static struct Float
    {
        double x;
    }
    Float f;
    assert(f.x != f.x); // NaN != NaN
    assert(f != f);     // Fails, should pass

    static struct Array
    {
        int[] x;
    }
    Array a1 = Array([1,2,3].dup);
    Array a2 = Array([1,2,3].dup);
    assert(a1.x !is a2.x);
    assert(a1.x == a2.x);
    assert(a1 == a2);   // Fails, should pass

    static struct Class
    {
        Object x;
    }
    static class X
    {
        bool opEquals(Object o){ return true; }
    }

    Class c1a = Class(new Object());
    Class c2a = Class(new Object());
    assert(c1a.x !is c2a.x);
    assert(c1a.x != c2a.x);
    assert(c1a != c2a); // Pass, Object.opEquals works like bitwise compare

    Class c1b = Class(new X());
    Class c2b = Class(new X());
    assert(c1b.x !is c2b.x);
    assert(c1b.x == c2b.x);
    assert(c1b == c2b); // Fails, should pass
}

To fix the comparison behavior of a struct that has classes as members,
we need to fix the bug 1824 first.

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


More information about the Digitalmars-d-bugs mailing list