3
3
use Foo \Baz \Qux \Forest ;
4
4
use Some \ClassName as ClassAlias ;
5
5
use Tests \Fixtures \Model ;
6
+ use Tests \Fixtures \RegularClass ;
6
7
use function Tests \Fixtures \{makeModel };
7
8
8
9
enum GlobalEnum {
@@ -11,6 +12,276 @@ enum GlobalEnum {
11
12
case Moderator;
12
13
}
13
14
15
+ test ('named arguments ' , function () {
16
+ $ variable = new RegularClass ();
17
+
18
+ $ f1 = function (string $ a1 ) use ($ variable ) {
19
+ return new RegularClass (
20
+ a1: $ a1 ,
21
+ a2: 'string ' ,
22
+ a3: 1 ,
23
+ a4: 1.1 ,
24
+ a5: true ,
25
+ a6: null ,
26
+ a7: ['string ' ],
27
+ a8: ['string ' , $ a1 , 1 , null , true ],
28
+ a9: [[[[['string ' , $ a1 , 1 , null , true ]]]]],
29
+ a10: new RegularClass (
30
+ a1: $ a1 ,
31
+ a2: 'string ' ,
32
+ a3: 1 ,
33
+ a4: 1.1 ,
34
+ a5: true ,
35
+ a6: null ,
36
+ a7: ['string ' ],
37
+ a8: ['string ' , $ a1 , 1 , null , true ],
38
+ a9: [[[[['string ' , $ a1 , 1 , null , true ]]]]],
39
+ a10: new RegularClass (),
40
+ a11: RegularClass::C,
41
+ a12: RegularClass::staticMethod (),
42
+ a13: (new RegularClass ())->instanceMethod (),
43
+ a14: [new RegularClass (), RegularClass::C, RegularClass::staticMethod (), (new RegularClass ())->instanceMethod ()],
44
+ ),
45
+ a11: RegularClass::C,
46
+ a12: [new RegularClass (), RegularClass::C],
47
+ a13: RegularClass::staticMethod (),
48
+ a14: (new RegularClass ())->instanceMethod (),
49
+ a15: fn () => new RegularClass (
50
+ a1: $ a1 ,
51
+ a2: 'string ' ,
52
+ a3: 1 ,
53
+ a4: 1.1 ,
54
+ a5: true ,
55
+ a6: null ,
56
+ a7: ['string ' ],
57
+ a8: ['string ' , $ a1 , 1 , null , true ],
58
+ a9: [[[[['string ' , $ a1 , 1 , null , true ]]]]],
59
+ a10: new RegularClass (
60
+ a1: $ a1 ,
61
+ a2: 'string ' ,
62
+ a3: 1 ,
63
+ a4: 1.1 ,
64
+ a5: true ,
65
+ a6: null ,
66
+ a7: ['string ' ],
67
+ a8: ['string ' , $ a1 , 1 , null , true ],
68
+ a9: [[[[['string ' , $ a1 , 1 , null , true ]]]]],
69
+ a10: new RegularClass (),
70
+ a11: RegularClass::C,
71
+ a12: RegularClass::staticMethod (),
72
+ a13: (new RegularClass ())->instanceMethod (),
73
+ a14: [new RegularClass (), RegularClass::C, RegularClass::staticMethod (), (new RegularClass ())->instanceMethod ()],
74
+ ),
75
+ a11: RegularClass::C,
76
+ a12: [new RegularClass (), RegularClass::C],
77
+ a13: RegularClass::staticMethod (),
78
+ a14: (new RegularClass ())->instanceMethod (),
79
+ ),
80
+ a16: fn () => fn () => new RegularClass (
81
+ a1: $ a1 ,
82
+ a2: 'string ' ,
83
+ a3: 1 ,
84
+ a4: 1.1 ,
85
+ a5: true ,
86
+ a6: null ,
87
+ a7: ['string ' ],
88
+ a8: ['string ' , $ a1 , 1 , null , true ],
89
+ a9: [[[[['string ' , $ a1 , 1 , null , true ]]]]],
90
+ a10: new RegularClass (
91
+ a1: $ a1 ,
92
+ a2: 'string ' ,
93
+ a3: 1 ,
94
+ a4: 1.1 ,
95
+ a5: true ,
96
+ a6: null ,
97
+ a7: ['string ' ],
98
+ a8: ['string ' , $ a1 , 1 , null , true ],
99
+ a9: [[[[['string ' , $ a1 , 1 , null , true ]]]]],
100
+ a10: new RegularClass (),
101
+ a11: RegularClass::C,
102
+ a12: RegularClass::staticMethod (),
103
+ a13: (new RegularClass ())->instanceMethod (),
104
+ a14: [new RegularClass (), RegularClass::C, RegularClass::staticMethod (), (new RegularClass ())->instanceMethod ()],
105
+ ),
106
+ a11: RegularClass::C,
107
+ a12: [new RegularClass (), RegularClass::C],
108
+ a13: RegularClass::staticMethod (),
109
+ a14: (new RegularClass ())->instanceMethod (),
110
+ ),
111
+ a17: function () use ($ variable ) {
112
+ return new RegularClass (
113
+ a1: $ a1 ,
114
+ a2: 'string ' ,
115
+ a3: 1 ,
116
+ a4: 1.1 ,
117
+ a5: true ,
118
+ a6: null ,
119
+ a7: ['string ' ],
120
+ a8: ['string ' , $ a1 , 1 , null , true ],
121
+ a9: [[[[['string ' , $ a1 , 1 , null , true ]]]]],
122
+ a10: new RegularClass (
123
+ a1: $ a1 ,
124
+ a2: 'string ' ,
125
+ a3: 1 ,
126
+ a4: 1.1 ,
127
+ a5: true ,
128
+ a6: null ,
129
+ a7: ['string ' ],
130
+ a8: ['string ' , $ a1 , 1 , null , true ],
131
+ a9: [[[[['string ' , $ a1 , 1 , null , true ]]]]],
132
+ a10: new RegularClass (),
133
+ a11: RegularClass::C,
134
+ a12: RegularClass::staticMethod (),
135
+ a13: (new RegularClass ())->instanceMethod (),
136
+ a14: [new RegularClass (), RegularClass::C, RegularClass::staticMethod (), (new RegularClass ())->instanceMethod ()],
137
+ ),
138
+ a11: RegularClass::C,
139
+ a12: [new RegularClass (), RegularClass::C],
140
+ a13: RegularClass::staticMethod (),
141
+ a14: (new RegularClass ())->instanceMethod (),
142
+ );
143
+ },
144
+ a18: reflection_closure_my_function (),
145
+ a19: reflection_closure_my_function (ReflectionClosureGlobalEnum::Guest),
146
+ a20: reflection_closure_my_function (enum: ReflectionClosureGlobalEnum::Guest),
147
+ );
148
+ };
149
+
150
+ $ e1 = "function (string \$a1) use ( \$variable) {
151
+ return new \Tests\Fixtures\RegularClass(
152
+ a1: \$a1,
153
+ a2: 'string',
154
+ a3: 1,
155
+ a4: 1.1,
156
+ a5: true,
157
+ a6: null,
158
+ a7: ['string'],
159
+ a8: ['string', \$a1, 1, null, true],
160
+ a9: [[[[['string', \$a1, 1, null, true]]]]],
161
+ a10: new \Tests\Fixtures\RegularClass(
162
+ a1: \$a1,
163
+ a2: 'string',
164
+ a3: 1,
165
+ a4: 1.1,
166
+ a5: true,
167
+ a6: null,
168
+ a7: ['string'],
169
+ a8: ['string', \$a1, 1, null, true],
170
+ a9: [[[[['string', \$a1, 1, null, true]]]]],
171
+ a10: new \Tests\Fixtures\RegularClass(),
172
+ a11: \Tests\Fixtures\RegularClass::C,
173
+ a12: \Tests\Fixtures\RegularClass::staticMethod(),
174
+ a13: (new \Tests\Fixtures\RegularClass())->instanceMethod(),
175
+ a14: [new \Tests\Fixtures\RegularClass(), \Tests\Fixtures\RegularClass::C, \Tests\Fixtures\RegularClass::staticMethod(), (new \Tests\Fixtures\RegularClass())->instanceMethod()],
176
+ ),
177
+ a11: \Tests\Fixtures\RegularClass::C,
178
+ a12: [new \Tests\Fixtures\RegularClass(), \Tests\Fixtures\RegularClass::C],
179
+ a13: \Tests\Fixtures\RegularClass::staticMethod(),
180
+ a14: (new \Tests\Fixtures\RegularClass())->instanceMethod(),
181
+ a15: fn () => new \Tests\Fixtures\RegularClass(
182
+ a1: \$a1,
183
+ a2: 'string',
184
+ a3: 1,
185
+ a4: 1.1,
186
+ a5: true,
187
+ a6: null,
188
+ a7: ['string'],
189
+ a8: ['string', \$a1, 1, null, true],
190
+ a9: [[[[['string', \$a1, 1, null, true]]]]],
191
+ a10: new \Tests\Fixtures\RegularClass(
192
+ a1: \$a1,
193
+ a2: 'string',
194
+ a3: 1,
195
+ a4: 1.1,
196
+ a5: true,
197
+ a6: null,
198
+ a7: ['string'],
199
+ a8: ['string', \$a1, 1, null, true],
200
+ a9: [[[[['string', \$a1, 1, null, true]]]]],
201
+ a10: new \Tests\Fixtures\RegularClass(),
202
+ a11: \Tests\Fixtures\RegularClass::C,
203
+ a12: \Tests\Fixtures\RegularClass::staticMethod(),
204
+ a13: (new \Tests\Fixtures\RegularClass())->instanceMethod(),
205
+ a14: [new \Tests\Fixtures\RegularClass(), \Tests\Fixtures\RegularClass::C, \Tests\Fixtures\RegularClass::staticMethod(), (new \Tests\Fixtures\RegularClass())->instanceMethod()],
206
+ ),
207
+ a11: \Tests\Fixtures\RegularClass::C,
208
+ a12: [new \Tests\Fixtures\RegularClass(), \Tests\Fixtures\RegularClass::C],
209
+ a13: \Tests\Fixtures\RegularClass::staticMethod(),
210
+ a14: (new \Tests\Fixtures\RegularClass())->instanceMethod(),
211
+ ),
212
+ a16: fn () => fn () => new \Tests\Fixtures\RegularClass(
213
+ a1: \$a1,
214
+ a2: 'string',
215
+ a3: 1,
216
+ a4: 1.1,
217
+ a5: true,
218
+ a6: null,
219
+ a7: ['string'],
220
+ a8: ['string', \$a1, 1, null, true],
221
+ a9: [[[[['string', \$a1, 1, null, true]]]]],
222
+ a10: new \Tests\Fixtures\RegularClass(
223
+ a1: \$a1,
224
+ a2: 'string',
225
+ a3: 1,
226
+ a4: 1.1,
227
+ a5: true,
228
+ a6: null,
229
+ a7: ['string'],
230
+ a8: ['string', \$a1, 1, null, true],
231
+ a9: [[[[['string', \$a1, 1, null, true]]]]],
232
+ a10: new \Tests\Fixtures\RegularClass(),
233
+ a11: \Tests\Fixtures\RegularClass::C,
234
+ a12: \Tests\Fixtures\RegularClass::staticMethod(),
235
+ a13: (new \Tests\Fixtures\RegularClass())->instanceMethod(),
236
+ a14: [new \Tests\Fixtures\RegularClass(), \Tests\Fixtures\RegularClass::C, \Tests\Fixtures\RegularClass::staticMethod(), (new \Tests\Fixtures\RegularClass())->instanceMethod()],
237
+ ),
238
+ a11: \Tests\Fixtures\RegularClass::C,
239
+ a12: [new \Tests\Fixtures\RegularClass(), \Tests\Fixtures\RegularClass::C],
240
+ a13: \Tests\Fixtures\RegularClass::staticMethod(),
241
+ a14: (new \Tests\Fixtures\RegularClass())->instanceMethod(),
242
+ ),
243
+ a17: function () use ( \$variable) {
244
+ return new \Tests\Fixtures\RegularClass(
245
+ a1: \$a1,
246
+ a2: 'string',
247
+ a3: 1,
248
+ a4: 1.1,
249
+ a5: true,
250
+ a6: null,
251
+ a7: ['string'],
252
+ a8: ['string', \$a1, 1, null, true],
253
+ a9: [[[[['string', \$a1, 1, null, true]]]]],
254
+ a10: new \Tests\Fixtures\RegularClass(
255
+ a1: \$a1,
256
+ a2: 'string',
257
+ a3: 1,
258
+ a4: 1.1,
259
+ a5: true,
260
+ a6: null,
261
+ a7: ['string'],
262
+ a8: ['string', \$a1, 1, null, true],
263
+ a9: [[[[['string', \$a1, 1, null, true]]]]],
264
+ a10: new \Tests\Fixtures\RegularClass(),
265
+ a11: \Tests\Fixtures\RegularClass::C,
266
+ a12: \Tests\Fixtures\RegularClass::staticMethod(),
267
+ a13: (new \Tests\Fixtures\RegularClass())->instanceMethod(),
268
+ a14: [new \Tests\Fixtures\RegularClass(), \Tests\Fixtures\RegularClass::C, \Tests\Fixtures\RegularClass::staticMethod(), (new \Tests\Fixtures\RegularClass())->instanceMethod()],
269
+ ),
270
+ a11: \Tests\Fixtures\RegularClass::C,
271
+ a12: [new \Tests\Fixtures\RegularClass(), \Tests\Fixtures\RegularClass::C],
272
+ a13: \Tests\Fixtures\RegularClass::staticMethod(),
273
+ a14: (new \Tests\Fixtures\RegularClass())->instanceMethod(),
274
+ );
275
+ },
276
+ a18: \\reflection_closure_my_function(),
277
+ a19: \\reflection_closure_my_function(\ReflectionClosureGlobalEnum::Guest),
278
+ a20: \\reflection_closure_my_function(enum: \ReflectionClosureGlobalEnum::Guest),
279
+ );
280
+ } " ;
281
+
282
+ expect ($ f1 )->toBeCode ($ e1 );
283
+ })->with ('serializers ' );
284
+
14
285
test ('enums ' , function () {
15
286
$ f = function (GlobalEnum $ role ) {
16
287
return $ role ;
@@ -419,3 +690,14 @@ public function getSelf(self $instance): self
419
690
return $ instance ;
420
691
}
421
692
}
693
+
694
+ enum ReflectionClosureGlobalEnum {
695
+ case Admin;
696
+ case Guest;
697
+ case Moderator;
698
+ }
699
+
700
+ function reflection_closure_my_function (SerializerGlobalEnum $ enum = SerializerGlobalEnum::Admin)
701
+ {
702
+ return $ enum ;
703
+ }
0 commit comments