1--TEST--
2No coercion should be applied to type false 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|false {
14        return $v;
15    }
16}
17
18$p = new P();
19$c = new C();
20
21var_dump($p->foo(0));
22try {
23    var_dump($c->foo(0));
24} catch (\TypeError $e) {
25    echo $e->getMessage(), \PHP_EOL;
26}
27
28?>
29--EXPECT--
30bool(false)
31C::foo(): Return value must be of type array|false, int returned
32