File tree Expand file tree Collapse file tree 2 files changed +28
-1
lines changed
tests/type_declarations/variance Expand file tree Collapse file tree 2 files changed +28
-1
lines changed Original file line number Diff line number Diff line change
1
+ --TEST--
2
+ Forward compatibility with types that look like classes but aren't
3
+ --FILE--
4
+ <?php
5
+
6
+ spl_autoload_register (function ($ class ) {
7
+ var_dump ($ class );
8
+ if ($ class === 'X ' ) {
9
+ class X {}
10
+ } else {
11
+ class Y {}
12
+ }
13
+ });
14
+
15
+ class A {
16
+ public function method (X $ param ) : object {}
17
+ }
18
+
19
+ class B extends A {
20
+ public function method (object $ param ) : Y {}
21
+ }
22
+
23
+ ?>
24
+ --EXPECT--
25
+ string(1) "Y"
26
+ string(1) "X"
Original file line number Diff line number Diff line change @@ -320,7 +320,8 @@ _inheritance_status _check_covariance(
320
320
code = INHERITANCE_UNRESOLVED ;
321
321
}
322
322
} else if (proto_type_code == IS_OBJECT ) {
323
- code = INHERITANCE_SUCCESS ;
323
+ zend_class_entry * fe_ce = lookup_class (fe_class_name );
324
+ code = fe_ce ? INHERITANCE_SUCCESS : INHERITANCE_UNRESOLVED ;
324
325
} else {
325
326
code = INHERITANCE_ERROR ;
326
327
}
You can’t perform that action at this time.
0 commit comments