@@ -13,6 +13,7 @@ class ArrayColumnTest
13
13
public function testArray1 (array $ array ): void
14
14
{
15
15
assertType ('list<string> ' , array_column ($ array , 'column ' ));
16
+ assertType ('list<string> ' , array_column ($ array , 'column ' , null ));
16
17
assertType ('array<int|string, string> ' , array_column ($ array , 'column ' , 'key ' ));
17
18
assertType ('array<int|string, array<string, string>> ' , array_column ($ array , null , 'key ' ));
18
19
}
@@ -22,12 +23,14 @@ public function testArray2(array $array): void
22
23
{
23
24
// Note: Array may still be empty!
24
25
assertType ('list<string> ' , array_column ($ array , 'column ' ));
26
+ assertType ('list<string> ' , array_column ($ array , 'column ' , null ));
25
27
}
26
28
27
29
/** @param array{} $array */
28
30
public function testArray3 (array $ array ): void
29
31
{
30
32
assertType ('array{} ' , array_column ($ array , 'column ' ));
33
+ assertType ('array{} ' , array_column ($ array , 'column ' , null ));
31
34
assertType ('array{} ' , array_column ($ array , 'column ' , 'key ' ));
32
35
assertType ('array{} ' , array_column ($ array , null , 'key ' ));
33
36
}
@@ -66,6 +69,7 @@ public function testArray8(array $array): void
66
69
public function testConstantArray1 (array $ array ): void
67
70
{
68
71
assertType ('list<string> ' , array_column ($ array , 'column ' ));
72
+ assertType ('list<string> ' , array_column ($ array , 'column ' , null ));
69
73
assertType ('array<string, string> ' , array_column ($ array , 'column ' , 'key ' ));
70
74
assertType ('array<string, array{column: string, key: string}> ' , array_column ($ array , null , 'key ' ));
71
75
}
@@ -74,13 +78,15 @@ public function testConstantArray1(array $array): void
74
78
public function testConstantArray2 (array $ array ): void
75
79
{
76
80
assertType ('array{} ' , array_column ($ array , 'foo ' ));
81
+ assertType ('array{} ' , array_column ($ array , 'foo ' , null ));
77
82
assertType ('array{} ' , array_column ($ array , 'foo ' , 'key ' ));
78
83
}
79
84
80
85
/** @param array{array{column: string, key: 'bar'}} $array */
81
86
public function testConstantArray3 (array $ array ): void
82
87
{
83
88
assertType ("array{string} " , array_column ($ array , 'column ' ));
89
+ assertType ("array{string} " , array_column ($ array , 'column ' , null ));
84
90
assertType ("array{bar: string} " , array_column ($ array , 'column ' , 'key ' ));
85
91
assertType ("array{bar: array{column: string, key: 'bar'}} " , array_column ($ array , null , 'key ' ));
86
92
}
@@ -96,6 +102,7 @@ public function testConstantArray4(array $array): void
96
102
public function testConstantArray5 (array $ array ): void
97
103
{
98
104
assertType ("list<'foo'> " , array_column ($ array , 'column ' ));
105
+ assertType ("list<'foo'> " , array_column ($ array , 'column ' , null ));
99
106
assertType ("array<'bar'|int, 'foo'> " , array_column ($ array , 'column ' , 'key ' ));
100
107
assertType ("array<'bar'|int, array{column?: 'foo', key?: 'bar'}> " , array_column ($ array , null , 'key ' ));
101
108
}
@@ -104,12 +111,14 @@ public function testConstantArray5(array $array): void
104
111
public function testConstantArray6 (array $ array ): void
105
112
{
106
113
assertType ('list<bool|string> ' , array_column ($ array , mt_rand (0 , 1 ) === 0 ? 'column1 ' : 'column2 ' ));
114
+ assertType ('list<bool|string> ' , array_column ($ array , mt_rand (0 , 1 ) === 0 ? 'column1 ' : 'column2 ' , null ));
107
115
}
108
116
109
117
/** @param non-empty-array<int, array{column: string, key: string}> $array */
110
118
public function testConstantArray7 (array $ array ): void
111
119
{
112
120
assertType ('non-empty-list<string> ' , array_column ($ array , 'column ' ));
121
+ assertType ('non-empty-list<string> ' , array_column ($ array , 'column ' , null ));
113
122
assertType ('non-empty-array<string, string> ' , array_column ($ array , 'column ' , 'key ' ));
114
123
assertType ('non-empty-array<string, array{column: string, key: string}> ' , array_column ($ array , null , 'key ' ));
115
124
}
@@ -142,20 +151,23 @@ public function testConstantArray11(array $array): void
142
151
public function testConstantArray12 (array $ array ): void
143
152
{
144
153
assertType ("array{0?: 'foo'} " , array_column ($ array , 'column ' ));
154
+ assertType ("array{0?: 'foo'} " , array_column ($ array , 'column ' , null ));
145
155
assertType ("array{bar?: 'foo'} " , array_column ($ array , 'column ' , 'key ' ));
146
156
}
147
157
148
158
/** @param array{0?: array{column: 'foo1', key: 'bar1'}, 1?: array{column: 'foo2', key: 'bar2'}} $array */
149
159
public function testConstantArray13 (array $ array ): void
150
160
{
151
161
assertType ("array{0?: 'foo1'|'foo2', 1?: 'foo2'} " , array_column ($ array , 'column ' ));
162
+ assertType ("array{0?: 'foo1'|'foo2', 1?: 'foo2'} " , array_column ($ array , 'column ' , null ));
152
163
assertType ("array{bar1?: 'foo1', bar2?: 'foo2'} " , array_column ($ array , 'column ' , 'key ' ));
153
164
}
154
165
155
166
/** @param array{0?: array{column: 'foo1', key: 'bar1'}, 1: array{column: 'foo2', key: 'bar2'}} $array */
156
167
public function testConstantArray14 (array $ array ): void
157
168
{
158
169
assertType ("array{0: 'foo1'|'foo2', 1?: 'foo2'} " , array_column ($ array , 'column ' ));
170
+ assertType ("array{0: 'foo1'|'foo2', 1?: 'foo2'} " , array_column ($ array , 'column ' , null ));
159
171
assertType ("array{bar1?: 'foo1', bar2: 'foo2'} " , array_column ($ array , 'column ' , 'key ' ));
160
172
}
161
173
@@ -165,6 +177,7 @@ public function testConstantArray14(array $array): void
165
177
public function testImprecise1 (array $ array ): void
166
178
{
167
179
assertType ("list<'foo'> " , array_column ($ array , 'column ' ));
180
+ assertType ("list<'foo'> " , array_column ($ array , 'column ' , null ));
168
181
assertType ("array<'bar', 'foo'> " , array_column ($ array , 'column ' , 'key ' ));
169
182
assertType ("array{bar: array{column?: 'foo', key: 'bar'}} " , array_column ($ array , null , 'key ' ));
170
183
}
@@ -180,16 +193,19 @@ public function testImprecise2(array $array): void
180
193
public function testImprecise3 (array $ array ): void
181
194
{
182
195
assertType ('list<string> ' , array_column ($ array , 'column ' ));
196
+ assertType ('list<string> ' , array_column ($ array , 'column ' , null ));
183
197
assertType ('array<int|string, string> ' , array_column ($ array , 'column ' , 'key ' ));
184
198
}
185
199
186
200
/** @param array<int, DOMElement> $array */
187
201
public function testImprecise5 (array $ array ): void
188
202
{
189
203
assertType ('list<string> ' , array_column ($ array , 'nodeName ' ));
204
+ assertType ('list<string> ' , array_column ($ array , 'nodeName ' , null ));
190
205
assertType ('array<string, string> ' , array_column ($ array , 'nodeName ' , 'tagName ' ));
191
206
assertType ('array<string, DOMElement> ' , array_column ($ array , null , 'tagName ' ));
192
207
assertType ('list ' , array_column ($ array , 'foo ' ));
208
+ assertType ('list ' , array_column ($ array , 'foo ' , null ));
193
209
assertType ('array<string, mixed> ' , array_column ($ array , 'foo ' , 'tagName ' ));
194
210
assertType ('array<string> ' , array_column ($ array , 'nodeName ' , 'foo ' ));
195
211
assertType ('array<DOMElement> ' , array_column ($ array , null , 'foo ' ));
@@ -199,9 +215,11 @@ public function testImprecise5(array $array): void
199
215
public function testObjects1 (array $ array ): void
200
216
{
201
217
assertType ('non-empty-list<string> ' , array_column ($ array , 'nodeName ' ));
218
+ assertType ('non-empty-list<string> ' , array_column ($ array , 'nodeName ' , null ));
202
219
assertType ('non-empty-array<string, string> ' , array_column ($ array , 'nodeName ' , 'tagName ' ));
203
220
assertType ('non-empty-array<string, DOMElement> ' , array_column ($ array , null , 'tagName ' ));
204
221
assertType ('list ' , array_column ($ array , 'foo ' ));
222
+ assertType ('list ' , array_column ($ array , 'foo ' , null ));
205
223
assertType ('array<string, mixed> ' , array_column ($ array , 'foo ' , 'tagName ' ));
206
224
assertType ('non-empty-array<string> ' , array_column ($ array , 'nodeName ' , 'foo ' ));
207
225
assertType ('non-empty-array<DOMElement> ' , array_column ($ array , null , 'foo ' ));
@@ -211,9 +229,11 @@ public function testObjects1(array $array): void
211
229
public function testObjects2 (array $ array ): void
212
230
{
213
231
assertType ('array{string} ' , array_column ($ array , 'nodeName ' ));
232
+ assertType ('array{string} ' , array_column ($ array , 'nodeName ' , null ));
214
233
assertType ('non-empty-array<string, string> ' , array_column ($ array , 'nodeName ' , 'tagName ' ));
215
234
assertType ('non-empty-array<string, DOMElement> ' , array_column ($ array , null , 'tagName ' ));
216
235
assertType ('list ' , array_column ($ array , 'foo ' ));
236
+ assertType ('list ' , array_column ($ array , 'foo ' , null ));
217
237
assertType ('array<string, mixed> ' , array_column ($ array , 'foo ' , 'tagName ' ));
218
238
assertType ('non-empty-array<string> ' , array_column ($ array , 'nodeName ' , 'foo ' ));
219
239
assertType ('non-empty-array<DOMElement> ' , array_column ($ array , null , 'foo ' ));
0 commit comments