/*
TEST_OUTPUT:
---
fail_compilation/fail94.d(28): Error: cannot implicitly override base class method `fail94.A.clone` with `fail94.B.clone`; add `override` attribute
---
*/
interface I
{
    int foo();
}

class IA : I
{
    int foo() { return 1; }
}

class A
{
    I i;

    I clone() { return i; }
}

class B : A
{
    IA ia;

    IA clone()
    out (result)
    {
	printf("B.clone()\n");
    }
    body { return ia; }
}

void main()
{
    IA ia = new IA;
    assert(ia.foo() == 1);

    I i = ia;
    assert(i.foo() == 1);

    A a = new A;
    a.i = i;
    assert(a.clone().foo() == 1);

    B b = new B;
    b.ia = ia;
    assert(b.clone().foo() == 1);

    a = b;
    assert(a.clone().foo() == 1);

    bar(&b.clone);
}


void bar(IA delegate() dg)
{
}

