/*
TEST_OUTPUT:
---
fail_compilation/fail11591b.d(16): Error: AA key type `S11591` does not have `bool opEquals(ref const S11591) const`
---
*/

struct S11591
{
    bool opEquals(int i) { return false; }
    Object o; // needed to suppress compiler generated opEquals
}

void test11591()
{
    int[S11591] aa;
}

/*
TEST_OUTPUT:
---
fail_compilation/fail11591b.d(30): Error: AA key type `S12307a` does not have `bool opEquals(ref const S12307a) const`
fail_compilation/fail11591b.d(31): Error: AA key type `S12307b` does not have `bool opEquals(ref const S12307b) const`
---
*/
struct S12307a { bool opEquals(T : typeof(this))(T) { return false; } }

void test12307()
{
    int[S12307a] aa1;    // a
    int[S12307b] aa2;    // b
}

struct S12307b { bool opEquals(T : typeof(this))(T) { return false; } }
