blob: 335b6952270232fc9503f2a8a095e2404f382966 [file] [log] [blame]
/*
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)
{
}