33use Foo \Baz \Qux \Forest ;
44use Some \ClassName as ClassAlias ;
55use Tests \Fixtures \Model ;
6+ use Tests \Fixtures \RegularClass ;
67use function Tests \Fixtures \{makeModel };
78
89enum GlobalEnum {
@@ -11,6 +12,276 @@ enum GlobalEnum {
1112 case Moderator;
1213}
1314
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+
14285test ('enums ' , function () {
15286 $ f = function (GlobalEnum $ role ) {
16287 return $ role ;
@@ -419,3 +690,14 @@ public function getSelf(self $instance): self
419690 return $ instance ;
420691 }
421692}
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