1--TEST-- 2Valid union type variance 3--FILE-- 4<?php 5 6class X {} 7class Y extends X {} 8 9class A { 10 public X|Y $prop; 11 public iterable $prop2; 12 13 public function method(int $a): int|float {} 14 public function method2(B|string $a): A|string {} 15 public function method3(Y|B $a): X|A {} 16 public function method4(Traversable|X $a): iterable|X {} 17} 18class B extends A { 19 public X $prop; 20 public array|Traversable $prop2; 21 22 public function method(int|float $a): int {} 23 public function method2(A|string $a): B|string {} 24 public function method3(A|X $a): B|Y {} 25 public function method4(iterable|X $a): Traversable|X {} 26} 27 28?> 29===DONE=== 30--EXPECT-- 31===DONE=== 32