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