File tree Expand file tree Collapse file tree 2 files changed +44
-0
lines changed
Zend/tests/type_declarations/variance Expand file tree Collapse file tree 2 files changed +44
-0
lines changed Original file line number Diff line number Diff line change
1
+ --TEST--
2
+ Returns are covariant, but we don't allow the code due to class ordering
3
+ --FILE--
4
+ <?php
5
+
6
+ class A {
7
+ public function method () : B {}
8
+ }
9
+ class B extends A {
10
+ public function method () : C {}
11
+ }
12
+ class C extends B {
13
+ }
14
+
15
+ new C ;
16
+
17
+ ?>
18
+ --EXPECTF--
19
+ Fatal error: Declaration of B::method(): C must be compatible with A::method(): B in %s on line %d
Original file line number Diff line number Diff line change
1
+ --TEST--
2
+ Returns are covariant, but we don't allow the code due to class ordering (autoload variation)
3
+ --FILE--
4
+ <?php
5
+
6
+ spl_autoload_register (function ($ class ) {
7
+ if ($ class === 'A ' ) {
8
+ class A {
9
+ public function method () : B {}
10
+ }
11
+ } else if ($ class == 'B ' ) {
12
+ class B extends A {
13
+ public function method () : C {}
14
+ }
15
+ } else {
16
+ class C extends B {
17
+ }
18
+ }
19
+ });
20
+
21
+ $ c = new C ;
22
+
23
+ ?>
24
+ --EXPECTF--
25
+ Fatal error: Declaration of B::method(): C must be compatible with A::method(): B in %s on line %d
You can’t perform that action at this time.
0 commit comments