/++ 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 { } }