mirror of
https://github.com/dlang/dmd.git
synced 2025-04-26 21:21:48 +03:00
35 lines
1.2 KiB
D
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 { }
|
|
}
|