@@ -69,6 +69,22 @@ public function arrayReplaceUnionTypeArrayShapes($array1, $array2): void
6969 assertType ("array<int, array{bar: '2'}|array{bar: '3'}|array{foo: '1'}|array{foo: '2'}> " , array_replace ($ array2 , $ array1 ));
7070 }
7171
72+ /**
73+ * @param array{foo: '1', bar: '2'} $array1
74+ * @param array<string, int> $array2
75+ * @param array<int, string> $array3
76+ */
77+ public function arrayReplaceArrayShapeAndGeneralArray ($ array1 , $ array2 , $ array3 ): void
78+ {
79+ assertType ("non-empty-array<string, '1'|'2'|int> " , array_replace ($ array1 , $ array2 ));
80+ assertType ("non-empty-array<string, '1'|'2'|int> " , array_replace ($ array2 , $ array1 ));
81+
82+ assertType ("non-empty-array<'bar'|'foo'|int, string> " , array_replace ($ array1 , $ array3 ));
83+ assertType ("non-empty-array<'bar'|'foo'|int, string> " , array_replace ($ array3 , $ array1 ));
84+
85+ assertType ("array<int|string, int|string> " , array_replace ($ array2 , $ array3 ));
86+ }
87+
7288 /**
7389 * @param array{0: 1, 1: 2} $array1
7490 * @param array{1: 3, 2: 4} $array2
0 commit comments