dmd/compiler/test/fail_compilation/covariant_override.d
2022-07-09 18:53:07 +02:00

35 lines
1.2 KiB
D

/++
https://issues.dlang.org/show_bug.cgi?id=21538
TEST_OUTPUT:
---
fail_compilation/covariant_override.d(23): Error: function `@safe void covariant_override.CI.f(void delegate() @safe dg)` does not override any function, did you mean to override `@safe void covariant_override.I.f(void delegate() @system dg)`?
fail_compilation/covariant_override.d(34): Error: function `@safe void covariant_override.CA.f(void delegate() @safe dg)` does not override any function, did you mean to override `@safe void covariant_override.A.f(void delegate() @system dg)`?
fail_compilation/covariant_override.d(20): Error: class `covariant_override.CI` interface function `void f(void delegate() @system dg) @safe` is not implemented
---
++/
static assert(!is(void delegate() @system : void delegate() @safe));
static assert( is(void delegate() @safe : void delegate() @system));
interface I
{
void f(void delegate() @system dg) @safe;
}
class CI : I
{
// this overrride should not be legal
override void f(void delegate() @safe dg) @safe { }
}
abstract class A
{
void f(void delegate() @system dg) @safe;
}
class CA : A
{
// this overrride should not be legal
override void f(void delegate() @safe dg) @safe { }
}