1--TEST-- 2Replacing union of classes respecting intersection type by intersection type 3--FILE-- 4<?php 5 6interface X {} 7interface Y {} 8 9class TestOne implements X, Y {} 10class TestTwo implements X, Y {} 11 12interface A 13{ 14 public function foo(TestOne|TestTwo $param): X&Y; 15} 16 17interface B extends A 18{ 19 public function foo(X&Y $param): TestOne|TestTwo; 20} 21 22interface C extends A 23{ 24 public function foo(X $param): TestTwo; 25} 26 27interface D extends A 28{ 29 public function foo(Y $param): TestOne; 30} 31 32interface E extends B 33{ 34 public function foo(X $param): TestTwo; 35} 36 37interface F extends B 38{ 39 public function foo(Y $param): TestOne; 40} 41 42?> 43===DONE=== 44--EXPECT-- 45===DONE=== 46