1--TEST-- 2No coercion should be applied to type true even if it's an overide 3--FILE-- 4<?php 5 6class P { 7 public function foo($v): array|bool { 8 return $v; 9 } 10} 11 12class C { 13 public function foo($v): array|true { 14 return $v; 15 } 16} 17 18$p = new P(); 19$c = new C(); 20 21var_dump($p->foo(1)); 22try { 23 var_dump($c->foo(1)); 24} catch (\TypeError $e) { 25 echo $e->getMessage(), \PHP_EOL; 26} 27 28?> 29--EXPECT-- 30bool(true) 31C::foo(): Return value must be of type array|true, int returned 32