diff options
Diffstat (limited to 'ext/opcache/tests/preload_variance.inc')
-rw-r--r-- | ext/opcache/tests/preload_variance.inc | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/ext/opcache/tests/preload_variance.inc b/ext/opcache/tests/preload_variance.inc new file mode 100644 index 0000000000..09f057442c --- /dev/null +++ b/ext/opcache/tests/preload_variance.inc @@ -0,0 +1,41 @@ +<?php + +// Requires X, delay to runtime. +// TODO: It is not actually required, because we don't need X to check inheritance in this case. +class A extends Z { + public function method(X $a) {} +} +class B extends Z { + public function method($a) : X {} +} + +// Works. +class C extends Z { + public function method($a): self {} + public function method2($a): C {} +} +class D extends C { + public function method($a): self {} + public function method2($a): D {} +} + +// Works. +interface I {} +interface J extends I {} +class E { + public function method($a): I {} +} +class F extends E { + public function method($a): J {} +} + +// Requires K & L, delay to runtime. +class G { + public function method($a): K {} +} +class H extends G { + public function method($a): L {} +} + +// Early-binding preventer. +class Z {} |