/*
TEST_OUTPUT:
---
fail_compilation/fail297.d(30): Error: incompatible types for `(Bar()) + (baz())`: `Bar` and `const(Bar)`
---
*/

// https://issues.dlang.org/show_bug.cgi?id=1969
// ICE(cod1.c) using undefined operator with one const operand
// ICE or wrong-code. D2 only. Internal error: backend\cod1.c 1673
/* Root cause: BinExp::typeCombine() is checking for an _exact_ match, but
typeMerge() will return success.

PATCH: cast.c BinExp::typeCombine().
Compare the immutable versions of the types, instead of the types themselves.

    if (op == TOKmin || op == TOKadd)
    {
        if (t1->ito == t2->ito && (t1->ty == Tstruct || t1->ty == Tclass))
            goto Lerror;
    }
*/

struct Bar {}

const(Bar) baz() { return Bar(); }

void foo()
{
    Bar result = Bar() + baz();
}
