Skip to content

Commit a4f7744

Browse files
committed
More specific type for toMergedArray/toNonEmptyMergedArray
1 parent 3246795 commit a4f7744

16 files changed

+185
-34
lines changed

src/Fp/Collections/ArrayList.php

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -249,9 +249,11 @@ public function toStream(): Stream
249249
*
250250
* @template TKO of array-key
251251
* @template TVO
252-
* @psalm-if-this-is ArrayList<array<TKO, TVO>>
252+
* @template TArray of array<TKO, TVO>
253+
* @psalm-if-this-is ArrayList<TArray>
253254
*
254255
* @return array<TKO, TVO>
256+
* @psalm-return (TArray is list ? list<TVO> : array<TKO, TVO>)
255257
*/
256258
public function toMergedArray(): array
257259
{
@@ -263,9 +265,11 @@ public function toMergedArray(): array
263265
*
264266
* @template TKO of array-key
265267
* @template TVO
266-
* @psalm-if-this-is ArrayList<array<TKO, TVO>>
268+
* @template TArray of array<TKO, TVO>
269+
* @psalm-if-this-is ArrayList<TArray>
267270
*
268271
* @return Option<non-empty-array<TKO, TVO>>
272+
* @psalm-return (TArray is list ? Option<non-empty-list<TVO>> : Option<non-empty-array<TKO, TVO>>)
269273
*/
270274
public function toNonEmptyMergedArray(): Option
271275
{

src/Fp/Collections/HashMap.php

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -236,9 +236,11 @@ public function toNonEmptyHashMap(): Option
236236
*
237237
* @template TKO of array-key
238238
* @template TVO
239-
* @psalm-if-this-is HashMap<TK, array<TKO, TVO>>
239+
* @template TArray of array<TKO, TVO>
240+
* @psalm-if-this-is HashMap<TK, TArray>
240241
*
241242
* @return array<TKO, TVO>
243+
* @psalm-return (TArray is list ? list<TVO> : array<TKO, TVO>)
242244
*/
243245
public function toMergedArray(): array
244246
{
@@ -250,9 +252,11 @@ public function toMergedArray(): array
250252
*
251253
* @template TKO of array-key
252254
* @template TVO
253-
* @psalm-if-this-is HashMap<TK, array<TKO, TVO>>
255+
* @template TArray of array<TKO, TVO>
256+
* @psalm-if-this-is HashMap<TK, TArray>
254257
*
255258
* @return Option<non-empty-array<TKO, TVO>>
259+
* @psalm-return (TArray is list ? Option<non-empty-list<TVO>> : Option<non-empty-array<TKO, TVO>>)
256260
*/
257261
public function toNonEmptyMergedArray(): Option
258262
{

src/Fp/Collections/HashSet.php

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -228,9 +228,11 @@ public function toStream(): Stream
228228
*
229229
* @template TKO of array-key
230230
* @template TVO
231-
* @psalm-if-this-is HashSet<array<TKO, TVO>>
231+
* @template TArray of array<TKO, TVO>
232+
* @psalm-if-this-is HashSet<TArray>
232233
*
233234
* @return array<TKO, TVO>
235+
* @psalm-return (TArray is list ? list<TVO> : array<TKO, TVO>)
234236
*/
235237
public function toMergedArray(): array
236238
{
@@ -242,9 +244,11 @@ public function toMergedArray(): array
242244
*
243245
* @template TKO of array-key
244246
* @template TVO
245-
* @psalm-if-this-is HashSet<array<TKO, TVO>>
247+
* @template TArray of array<TKO, TVO>
248+
* @psalm-if-this-is HashSet<TArray>
246249
*
247250
* @return Option<non-empty-array<TKO, TVO>>
251+
* @psalm-return (TArray is list ? Option<non-empty-list<TVO>> : Option<non-empty-array<TKO, TVO>>)
248252
*/
249253
public function toNonEmptyMergedArray(): Option
250254
{

src/Fp/Collections/LinkedList.php

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -245,9 +245,11 @@ public function toStream(): Stream
245245
*
246246
* @template TKO of array-key
247247
* @template TVO
248-
* @psalm-if-this-is LinkedList<array<TKO, TVO>>
248+
* @template TArray of array<TKO, TVO>
249+
* @psalm-if-this-is LinkedList<TArray>
249250
*
250251
* @return array<TKO, TVO>
252+
* @psalm-return (TArray is list ? list<TVO> : array<TKO, TVO>)
251253
*/
252254
public function toMergedArray(): array
253255
{
@@ -259,9 +261,11 @@ public function toMergedArray(): array
259261
*
260262
* @template TKO of array-key
261263
* @template TVO
262-
* @psalm-if-this-is LinkedList<array<TKO, TVO>>
264+
* @template TArray of array<TKO, TVO>
265+
* @psalm-if-this-is LinkedList<TArray>
263266
*
264267
* @return Option<non-empty-array<TKO, TVO>>
268+
* @psalm-return (TArray is list ? Option<non-empty-list<TVO>> : Option<non-empty-array<TKO, TVO>>)
265269
*/
266270
public function toNonEmptyMergedArray(): Option
267271
{

src/Fp/Collections/MapCastableOps.php

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -157,13 +157,17 @@ public function toNonEmptyHashMap(): Option;
157157
* ```php
158158
* >>> HashMap::collect(['f' => ['fst' => 1], 's' => ['snd' => 2], 't' => ['thr' => 3]])->toMergedArray()
159159
* => ['fst' => 1, 'snd' => 2, 'thr' => 3]
160+
* >>> HashMap::collect(['f' => [1, 2], 's' => [3, 4], 't' => [5, 6]])->toMergedArray()
161+
* => [1, 2, 3, 4, 5, 6]
160162
* ```
161163
*
162164
* @template TKO of array-key
163165
* @template TVO
164-
* @psalm-if-this-is Map<TK, array<TKO, TVO>>
166+
* @template TArray of array<TKO, TVO>
167+
* @psalm-if-this-is Map<TK, TArray>
165168
*
166169
* @return array<TKO, TVO>
170+
* @psalm-return (TArray is list ? list<TVO> : array<TKO, TVO>)
167171
*/
168172
public function toMergedArray(): array;
169173

@@ -173,15 +177,19 @@ public function toMergedArray(): array;
173177
* ```php
174178
* >>> HashMap::collect(['f' => ['fst' => 1], 's' => ['snd' => 2], 't' => ['thr' => 3]])->toNonEmptyMergedArray()
175179
* => Some(['fst' => 1, 'snd' => 2, 'thr' => 3])
180+
* >>> HashMap::collect(['f' => [1, 2], 's' => [3, 4], 't' => [5, 6]])->toNonEmptyMergedArray()
181+
* => Some([1, 2, 3, 4, 5, 6])
176182
* >>> HashMap::collect([])->toNonEmptyMergedArray()
177183
* => None
178184
* ```
179185
*
180186
* @template TKO of array-key
181187
* @template TVO
182-
* @psalm-if-this-is Map<TK, array<TKO, TVO>>
188+
* @template TArray of array<TKO, TVO>
189+
* @psalm-if-this-is Map<TK, TArray>
183190
*
184191
* @return Option<non-empty-array<TKO, TVO>>
192+
* @psalm-return (TArray is list ? Option<non-empty-list<TVO>> : Option<non-empty-array<TKO, TVO>>)
185193
*/
186194
public function toNonEmptyMergedArray(): Option;
187195

src/Fp/Collections/NonEmptyArrayList.php

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1032,9 +1032,11 @@ public function toStream(): Stream
10321032
*
10331033
* @template TKO of array-key
10341034
* @template TVO
1035-
* @psalm-if-this-is NonEmptyArrayList<array<TKO, TVO>>
1035+
* @template TArray of array<TKO, TVO>
1036+
* @psalm-if-this-is NonEmptyArrayList<TArray>
10361037
*
10371038
* @return array<TKO, TVO>
1039+
* @psalm-return (TArray is list ? list<TVO> : array<TKO, TVO>)
10381040
*/
10391041
public function toMergedArray(): array
10401042
{
@@ -1046,9 +1048,11 @@ public function toMergedArray(): array
10461048
*
10471049
* @template TKO of array-key
10481050
* @template TVO
1049-
* @psalm-if-this-is NonEmptyArrayList<non-empty-array<TKO, TVO>>
1051+
* @template TArray of non-empty-array<TKO, TVO>
1052+
* @psalm-if-this-is NonEmptyArrayList<TArray>
10501053
*
10511054
* @return non-empty-array<TKO, TVO>
1055+
* @psalm-return (TArray is non-empty-list ? non-empty-list<TVO> : non-empty-array<TKO, TVO>)
10521056
*/
10531057
public function toNonEmptyMergedArray(): array
10541058
{

src/Fp/Collections/NonEmptyHashMap.php

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -275,9 +275,11 @@ public function toNonEmptyHashMap(): NonEmptyHashMap
275275
*
276276
* @template TKO of array-key
277277
* @template TVO
278-
* @psalm-if-this-is NonEmptyHashMap<TK, array<TKO, TVO>>
278+
* @template TArray of array<TKO, TVO>
279+
* @psalm-if-this-is NonEmptyHashMap<TK, TArray>
279280
*
280281
* @return array<TKO, TVO>
282+
* @psalm-return (TArray is list ? list<TVO> : array<TKO, TVO>)
281283
*/
282284
public function toMergedArray(): array
283285
{
@@ -289,9 +291,10 @@ public function toMergedArray(): array
289291
*
290292
* @template TKO of array-key
291293
* @template TVO
292-
* @psalm-if-this-is NonEmptyHashMap<TK, non-empty-array<TKO, TVO>>
294+
* @template TArray of non-empty-array<TKO, TVO>
295+
* @psalm-if-this-is NonEmptyHashMap<TK, TArray>
293296
*
294-
* @return non-empty-array<TKO, TVO>
297+
* @psalm-return (TArray is non-empty-list ? non-empty-list<TVO> : non-empty-array<TKO, TVO>)
295298
*/
296299
public function toNonEmptyMergedArray(): array
297300
{

src/Fp/Collections/NonEmptyHashSet.php

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -243,9 +243,11 @@ public function toStream(): Stream
243243
*
244244
* @template TKO of array-key
245245
* @template TVO
246-
* @psalm-if-this-is NonEmptyHashSet<array<TKO, TVO>>
246+
* @template TArray of array<TKO, TVO>
247+
* @psalm-if-this-is NonEmptyHashSet<TArray>
247248
*
248249
* @return array<TKO, TVO>
250+
* @psalm-return (TArray is list ? list<TVO> : array<TKO, TVO>)
249251
*/
250252
public function toMergedArray(): array
251253
{
@@ -257,9 +259,11 @@ public function toMergedArray(): array
257259
*
258260
* @template TKO of array-key
259261
* @template TVO
260-
* @psalm-if-this-is NonEmptyHashSet<non-empty-array<TKO, TVO>>
262+
* @template TArray of non-empty-array<TKO, TVO>
263+
* @psalm-if-this-is NonEmptyHashSet<TArray>
261264
*
262265
* @return non-empty-array<TKO, TVO>
266+
* @psalm-return (TArray is list ? non-empty-list<TVO> : non-empty-array<TKO, TVO>)
263267
*/
264268
public function toNonEmptyMergedArray(): array
265269
{

src/Fp/Collections/NonEmptyLinkedList.php

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1029,9 +1029,11 @@ public function toStream(): Stream
10291029
*
10301030
* @template TKO of array-key
10311031
* @template TVO
1032-
* @psalm-if-this-is NonEmptyLinkedList<array<TKO, TVO>>
1032+
* @template TArray of array<TKO, TVO>
1033+
* @psalm-if-this-is NonEmptyLinkedList<TArray>
10331034
*
10341035
* @return array<TKO, TVO>
1036+
* @psalm-return (TArray is list ? list<TVO> : array<TKO, TVO>)
10351037
*/
10361038
public function toMergedArray(): array
10371039
{
@@ -1043,9 +1045,11 @@ public function toMergedArray(): array
10431045
*
10441046
* @template TKO of array-key
10451047
* @template TVO
1046-
* @psalm-if-this-is NonEmptyLinkedList<non-empty-array<TKO, TVO>>
1048+
* @template TArray of non-empty-array<TKO, TVO>
1049+
* @psalm-if-this-is NonEmptyLinkedList<TArray>
10471050
*
10481051
* @return non-empty-array<TKO, TVO>
1052+
* @psalm-return (TArray is non-empty-list ? non-empty-list<TVO> : non-empty-array<TKO, TVO>)
10491053
*/
10501054
public function toNonEmptyMergedArray(): array
10511055
{

src/Fp/Collections/NonEmptyMapCastableOps.php

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -146,31 +146,38 @@ public function toNonEmptyHashMap(): NonEmptyHashMap;
146146
* If each element of the collection is an associative array then call of this method will fold all elements to one associative array.
147147
*
148148
* ```php
149-
* >>> HashMap::collect(['f' => ['fst' => 1], 's' => ['snd' => 2], 't' => ['thr' => 3]])->toMergedArray()
149+
* >>> NonEmptyHashMap::collectNonEmpty(['f' => ['fst' => 1], 's' => ['snd' => 2], 't' => ['thr' => 3]])->toMergedArray()
150150
* => ['fst' => 1, 'snd' => 2, 'thr' => 3]
151+
* >>> NonEmptyHashMap::collectNonEmpty(['f' => [1, 2], 's' => [3, 4], 't' => [5, 6]])->toMergedArray()
152+
* => [1, 2, 3, 4, 5, 6]
151153
* ```
152154
*
153155
* @template TKO of array-key
154156
* @template TVO
155-
* @psalm-if-this-is NonEmptyMap<TK, array<TKO, TVO>>
157+
* @template TArray of array<TKO, TVO>
158+
* @psalm-if-this-is NonEmptyMap<TK, TArray>
156159
*
157160
* @return array<TKO, TVO>
161+
* @psalm-return (TArray is list ? list<TVO> : array<TKO, TVO>)
158162
*/
159163
public function toMergedArray(): array;
160164

161165
/**
162166
* Non-empty version of {@see NonEmptyMapCastableOps::toMergedArray()}.
163167
*
164168
* ```php
165-
* >>> HashMap::collect(['f' => ['fst' => 1], 's' => ['snd' => 2], 't' => ['thr' => 3]])->toNonEmptyMergedArray()
169+
* >>> NonEmptyHashMap::collectNonEmpty(['f' => ['fst' => 1], 's' => ['snd' => 2], 't' => ['thr' => 3]])->toNonEmptyMergedArray()
166170
* => ['fst' => 1, 'snd' => 2, 'thr' => 3]
171+
* >>> NonEmptyHashMap::collectNonEmpty(['f' => [1, 2], 's' => [3, 4], 't' => [5, 6]])->toNonEmptyMergedArray()
172+
* => [1, 2, 3, 4, 5, 6]
167173
* ```
168174
*
169175
* @template TKO of array-key
170176
* @template TVO
171-
* @psalm-if-this-is NonEmptyMap<TK, non-empty-array<TKO, TVO>>
177+
* @template TArray of non-empty-array<TKO, TVO>
178+
* @psalm-if-this-is NonEmptyMap<TK, TArray>
172179
*
173-
* @return non-empty-array<TKO, TVO>
180+
* @psalm-return (TArray is non-empty-list ? non-empty-list<TVO> : non-empty-array<TKO, TVO>)
174181
*/
175182
public function toNonEmptyMergedArray(): array;
176183

0 commit comments

Comments
 (0)