<?php
declare(strict_types=1);
class A {}
class B extends A {}
class C extends B {}
interface InterfaceTest { public function foo(): B; }
abstract class AbstractTest {
public abstract function foo(): B;
}
class TestInterfaceContravariance implements InterfaceTest
{
public function foo(): A {}
}
class TestInterfaceCovariance implements InterfaceTest {
public function foo(): C {}
}
Fatal error: Declaration of TestInterfaceContravariance::foo(): A must be compatible with InterfaceTest::foo(): B in /in/pqI2n on line 16
Process exited with code 255.
Fatal error: Declaration of TestInterfaceContravariance::foo(): A must be compatible with InterfaceTest::foo(): B in /in/pqI2n on line 14
Process exited with code 255.
Warning: Unsupported declare 'strict_types' in /in/pqI2n on line 3
Parse error: syntax error, unexpected ':', expecting ';' or '{' in /in/pqI2n on line 9
Process exited with code 255.