Skip to content

Commit b3622a1

Browse files
sayuprcondrejmirtes
authored andcommitted
Fix deprecated parameter order
1 parent 9338fdf commit b3622a1

9 files changed

+139
-12
lines changed

src/Rules/FunctionDefinitionCheck.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -390,6 +390,7 @@ private function checkRequiredParameterAfterOptional(array $parameterNodes): arr
390390
$optionalParameter,
391391
),
392392
)->line($parameterNode->getStartLine())->build();
393+
$targetPhpVersion = null;
393394
continue;
394395
}
395396
if ($parameterNode->default === null) {

tests/PHPStan/Rules/Functions/ExistingClassesInArrowFunctionTypehintsRuleTest.php

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,10 @@ public function dataRequiredParameterAfterOptional(): array
100100
"Anonymous function uses native union types but they're supported only on PHP 8.0 and later.",
101101
19,
102102
],
103+
[
104+
"Anonymous function uses native union types but they're supported only on PHP 8.0 and later.",
105+
25,
106+
],
103107
],
104108
],
105109
[
@@ -129,6 +133,10 @@ public function dataRequiredParameterAfterOptional(): array
129133
'Deprecated in PHP 8.0: Required parameter $bar follows optional parameter $foo.',
130134
21,
131135
],
136+
[
137+
'Deprecated in PHP 8.0: Required parameter $quuz follows optional parameter $quux.',
138+
25,
139+
],
132140
],
133141
],
134142
[
@@ -162,6 +170,14 @@ public function dataRequiredParameterAfterOptional(): array
162170
'Deprecated in PHP 8.0: Required parameter $bar follows optional parameter $foo.',
163171
21,
164172
],
173+
[
174+
'Deprecated in PHP 8.1: Required parameter $qux follows optional parameter $baz.',
175+
25,
176+
],
177+
[
178+
'Deprecated in PHP 8.0: Required parameter $quuz follows optional parameter $quux.',
179+
25,
180+
],
165181
],
166182
],
167183
[
@@ -203,6 +219,18 @@ public function dataRequiredParameterAfterOptional(): array
203219
'Deprecated in PHP 8.3: Required parameter $bar follows optional parameter $foo.',
204220
23,
205221
],
222+
[
223+
'Deprecated in PHP 8.3: Required parameter $bar follows optional parameter $foo.',
224+
25,
225+
],
226+
[
227+
'Deprecated in PHP 8.1: Required parameter $qux follows optional parameter $baz.',
228+
25,
229+
],
230+
[
231+
'Deprecated in PHP 8.0: Required parameter $quuz follows optional parameter $quux.',
232+
25,
233+
],
206234
],
207235
],
208236
];

tests/PHPStan/Rules/Functions/ExistingClassesInClosureTypehintsRuleTest.php

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,10 @@ public function dataRequiredParameterAfterOptional(): array
144144
"Anonymous function uses native union types but they're supported only on PHP 8.0 and later.",
145145
33,
146146
],
147+
[
148+
"Anonymous function uses native union types but they're supported only on PHP 8.0 and later.",
149+
45,
150+
],
147151
],
148152
],
149153
[
@@ -173,6 +177,10 @@ public function dataRequiredParameterAfterOptional(): array
173177
'Deprecated in PHP 8.0: Required parameter $bar follows optional parameter $foo.',
174178
37,
175179
],
180+
[
181+
'Deprecated in PHP 8.0: Required parameter $quuz follows optional parameter $quux.',
182+
45,
183+
],
176184
],
177185
],
178186
[
@@ -206,6 +214,14 @@ public function dataRequiredParameterAfterOptional(): array
206214
'Deprecated in PHP 8.0: Required parameter $bar follows optional parameter $foo.',
207215
37,
208216
],
217+
[
218+
'Deprecated in PHP 8.1: Required parameter $qux follows optional parameter $baz.',
219+
45,
220+
],
221+
[
222+
'Deprecated in PHP 8.0: Required parameter $quuz follows optional parameter $quux.',
223+
45,
224+
],
209225
],
210226
],
211227
[
@@ -247,6 +263,18 @@ public function dataRequiredParameterAfterOptional(): array
247263
'Deprecated in PHP 8.3: Required parameter $bar follows optional parameter $foo.',
248264
41,
249265
],
266+
[
267+
'Deprecated in PHP 8.3: Required parameter $bar follows optional parameter $foo.',
268+
45,
269+
],
270+
[
271+
'Deprecated in PHP 8.1: Required parameter $qux follows optional parameter $baz.',
272+
45,
273+
],
274+
[
275+
'Deprecated in PHP 8.0: Required parameter $quuz follows optional parameter $quux.',
276+
45,
277+
],
250278
],
251279
],
252280
];

tests/PHPStan/Rules/Functions/ExistingClassesInTypehintsRuleTest.php

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -225,6 +225,10 @@ public function dataRequiredParameterAfterOptional(): array
225225
"Function RequiredAfterOptional\doConsectetur() uses native union types but they're supported only on PHP 8.0 and later.",
226226
38,
227227
],
228+
[
229+
"Function RequiredAfterOptional\doSed() uses native union types but they're supported only on PHP 8.0 and later.",
230+
50,
231+
],
228232
],
229233
],
230234
[
@@ -254,6 +258,10 @@ public function dataRequiredParameterAfterOptional(): array
254258
'Deprecated in PHP 8.0: Required parameter $bar follows optional parameter $foo.',
255259
42,
256260
],
261+
[
262+
'Deprecated in PHP 8.0: Required parameter $quuz follows optional parameter $quux.',
263+
50,
264+
],
257265
],
258266
],
259267
[
@@ -287,6 +295,14 @@ public function dataRequiredParameterAfterOptional(): array
287295
'Deprecated in PHP 8.0: Required parameter $bar follows optional parameter $foo.',
288296
42,
289297
],
298+
[
299+
'Deprecated in PHP 8.1: Required parameter $qux follows optional parameter $baz.',
300+
50,
301+
],
302+
[
303+
'Deprecated in PHP 8.0: Required parameter $quuz follows optional parameter $quux.',
304+
50,
305+
],
290306
],
291307
],
292308
[
@@ -328,6 +344,18 @@ public function dataRequiredParameterAfterOptional(): array
328344
'Deprecated in PHP 8.3: Required parameter $bar follows optional parameter $foo.',
329345
46,
330346
],
347+
[
348+
'Deprecated in PHP 8.3: Required parameter $bar follows optional parameter $foo.',
349+
50,
350+
],
351+
[
352+
'Deprecated in PHP 8.1: Required parameter $qux follows optional parameter $baz.',
353+
50,
354+
],
355+
[
356+
'Deprecated in PHP 8.0: Required parameter $quuz follows optional parameter $quux.',
357+
50,
358+
],
331359
],
332360
],
333361
];

tests/PHPStan/Rules/Functions/data/required-parameter-after-optional-arrow.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,3 +21,5 @@
2121
fn (mixed $foo = 1, $bar): int => 1; // not OK
2222

2323
fn (mixed $foo = null, $bar): int => 1; // not OK
24+
25+
fn (int|null $foo = null, $bar, ?int $baz = null, $qux, int $quux = 1, $quuz): int => 1; // not OK

tests/PHPStan/Rules/Functions/data/required-parameter-after-optional-closures.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,3 +41,7 @@ function (mixed $foo = 1, $bar): void // not OK
4141
function (mixed $foo = null, $bar): void // not OK
4242
{
4343
};
44+
45+
function (int|null $foo = null, $bar, ?int $baz = null, $qux, int $quux = 1, $quuz): void // not OK
46+
{
47+
};

tests/PHPStan/Rules/Functions/data/required-parameter-after-optional.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,3 +46,7 @@ function doAdipiscing(mixed $foo = 1, $bar): void // not OK
4646
function doElit(mixed $foo = null, $bar): void // not OK
4747
{
4848
}
49+
50+
function doSed(int|null $foo = null, $bar, ?int $baz = null, $qux, int $quux = 1, $quuz): void // not OK
51+
{
52+
}

tests/PHPStan/Rules/Methods/ExistingClassesInTypehintsRuleTest.php

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -219,6 +219,10 @@ public function dataRequiredParameterAfterOptional(): array
219219
"Method RequiredAfterOptional\Foo::doConsectetur() uses native union types but they're supported only on PHP 8.0 and later.",
220220
37,
221221
],
222+
[
223+
"Method RequiredAfterOptional\Foo::doSed() uses native union types but they're supported only on PHP 8.0 and later.",
224+
49,
225+
],
222226
],
223227
],
224228
[
@@ -248,6 +252,10 @@ public function dataRequiredParameterAfterOptional(): array
248252
'Deprecated in PHP 8.0: Required parameter $bar follows optional parameter $foo.',
249253
41,
250254
],
255+
[
256+
'Deprecated in PHP 8.0: Required parameter $quuz follows optional parameter $quux.',
257+
49,
258+
],
251259
],
252260
],
253261
[
@@ -281,6 +289,14 @@ public function dataRequiredParameterAfterOptional(): array
281289
'Deprecated in PHP 8.0: Required parameter $bar follows optional parameter $foo.',
282290
41,
283291
],
292+
[
293+
'Deprecated in PHP 8.1: Required parameter $qux follows optional parameter $baz.',
294+
49,
295+
],
296+
[
297+
'Deprecated in PHP 8.0: Required parameter $quuz follows optional parameter $quux.',
298+
49,
299+
],
284300
],
285301
],
286302
[
@@ -322,6 +338,18 @@ public function dataRequiredParameterAfterOptional(): array
322338
'Deprecated in PHP 8.3: Required parameter $bar follows optional parameter $foo.',
323339
45,
324340
],
341+
[
342+
'Deprecated in PHP 8.3: Required parameter $bar follows optional parameter $foo.',
343+
49,
344+
],
345+
[
346+
'Deprecated in PHP 8.1: Required parameter $qux follows optional parameter $baz.',
347+
49,
348+
],
349+
[
350+
'Deprecated in PHP 8.0: Required parameter $quuz follows optional parameter $quux.',
351+
49,
352+
],
325353
],
326354
],
327355
];

tests/PHPStan/Rules/Methods/data/required-parameter-after-optional.php

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -30,19 +30,23 @@ public function doSit(?int $foo = null, $bar): void // not OK
3030
{
3131
}
3232

33-
public function doAmet(int|null $foo = 1, $bar): void // not OK
34-
{
35-
}
33+
public function doAmet(int|null $foo = 1, $bar): void // not OK
34+
{
35+
}
3636

37-
public function doConsectetur(int|null $foo = null, $bar): void // not OK
38-
{
39-
}
37+
public function doConsectetur(int|null $foo = null, $bar): void // not OK
38+
{
39+
}
4040

41-
public function doAdipiscing(mixed $foo = 1, $bar): void // not OK
42-
{
43-
}
41+
public function doAdipiscing(mixed $foo = 1, $bar): void // not OK
42+
{
43+
}
4444

45-
public function doElit(mixed $foo = null, $bar): void // not OK
46-
{
47-
}
45+
public function doElit(mixed $foo = null, $bar): void // not OK
46+
{
47+
}
48+
49+
public function doSed(int|null $foo = null, $bar, ?int $baz = null, $qux, int $quux = 1, $quuz): void // not OK
50+
{
51+
}
4852
}

0 commit comments

Comments
 (0)