@@ -69,6 +69,22 @@ public function arrayReplaceUnionTypeArrayShapes($array1, $array2): void
69
69
assertType ("array<int, array{bar: '2'}|array{bar: '3'}|array{foo: '1'}|array{foo: '2'}> " , array_replace ($ array2 , $ array1 ));
70
70
}
71
71
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
+
72
88
/**
73
89
* @param array{0: 1, 1: 2} $array1
74
90
* @param array{1: 3, 2: 4} $array2
0 commit comments