Only one of the status has to be UNRESOLVED, the other could also
be SUCCESS.
Fixes oss-fuzz #19108 and oss-fuzz #19111.
--- /dev/null
+--TEST--
+Invalid property inheritance where one direction is valid and the other unresolved
+--FILE--
+<?php
+class A {
+ public X|B $prop;
+}
+class B extends A {
+ public B $prop;
+}
+?>
+--EXPECTF--
+Fatal error: Type of B::$prop must be X|B (as in class A) in %s on line %d
if (status1 == INHERITANCE_ERROR || status2 == INHERITANCE_ERROR) {
return INHERITANCE_ERROR;
}
- ZEND_ASSERT(status1 == INHERITANCE_UNRESOLVED && status2 == INHERITANCE_UNRESOLVED);
+ ZEND_ASSERT(status1 == INHERITANCE_UNRESOLVED || status2 == INHERITANCE_UNRESOLVED);
return INHERITANCE_UNRESOLVED;
}