Skip to content

Commit

Permalink
minor #5240 PHP8 - Allow trailing comma in parameter list support (Sp…
Browse files Browse the repository at this point in the history
…acePossum)

This PR was merged into the 2.17-dev branch.

Discussion
----------

PHP8 - Allow trailing comma in parameter list support

https://wiki.php.net/rfc/trailing_comma_in_parameter_list

Commits
-------

39c5415 PHP8 - Allow trailing comma in parameter list support
  • Loading branch information
SpacePossum committed Nov 7, 2020
2 parents 569f8cc + 39c5415 commit ac82d55
Show file tree
Hide file tree
Showing 3 changed files with 101 additions and 0 deletions.
20 changes: 20 additions & 0 deletions tests/Fixer/FunctionNotation/LambdaNotUsedImportFixerTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -216,4 +216,24 @@ public function provideDoNotFixCases()
];
}
}

/**
* @param string $expected
* @param string $input
*
* @dataProvider provideFix80Cases
* @requires PHP 8.0
*/
public function testFix80($expected, $input)
{
$this->doTest($expected, $input);
}

public function provideFix80Cases()
{
yield 'simple' => [
'<?php $foo = function() {};',
'<?php $foo = function() use ($bar,) {};',
];
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -128,46 +128,57 @@ public function provideFixCases()
'<?php function foo(string $param = null) {}',
'<?php function foo(?string $param = null) {}',
];

yield [
'<?php function foo(string $param= null) {}',
'<?php function foo(?string $param= null) {}',
];

yield [
'<?php function foo(string $param =null) {}',
'<?php function foo(?string $param =null) {}',
];

yield [
'<?php function foo(string $param=null) {}',
'<?php function foo(?string $param=null) {}',
];

yield [
'<?php function foo(string $param1 = null, string $param2 = null) {}',
'<?php function foo(?string $param1 = null, ?string $param2 = null) {}',
];

yield [
'<?php function foo(string &$param = null) {}',
'<?php function foo(?string &$param = null) {}',
];

yield [
'<?php function foo(string & $param = null) {}',
'<?php function foo(?string & $param = null) {}',
];

yield [
'<?php function foo(string /*comment*/$param = null) {}',
'<?php function foo(?string /*comment*/$param = null) {}',
];

yield [
'<?php function foo(string /*comment*/&$param = null) {}',
'<?php function foo(?string /*comment*/&$param = null) {}',
];

yield [
'<?php function foo(string &/*comment*/$param = null) {}',
'<?php function foo(?string &/*comment*/$param = null) {}',
];

yield [
'<?php $foo = function (string $param = null) {};',
'<?php $foo = function (?string $param = null) {};',
];

yield [
'<?php $foo = function (string &$param = null) {};',
'<?php $foo = function (?string &$param = null) {};',
Expand All @@ -177,78 +188,97 @@ public function provideFixCases()
'<?php function foo(Baz $param = null) {}',
'<?php function foo(?Baz $param = null) {}',
];

yield [
'<?php function foo(\Baz $param = null) {}',
'<?php function foo(?\Baz $param = null) {}',
];

yield [
'<?php function foo(Bar\Baz $param = null) {}',
'<?php function foo(?Bar\Baz $param = null) {}',
];

yield [
'<?php function foo(\Bar\Baz $param = null) {}',
'<?php function foo(?\Bar\Baz $param = null) {}',
];

yield [
'<?php function foo(Baz &$param = null) {}',
'<?php function foo(?Baz &$param = null) {}',
];

yield [
'<?php function foo(\Baz &$param = null) {}',
'<?php function foo(?\Baz &$param = null) {}',
];

yield [
'<?php function foo(Bar\Baz &$param = null) {}',
'<?php function foo(?Bar\Baz &$param = null) {}',
];

yield [
'<?php function foo(\Bar\Baz &$param = null) {}',
'<?php function foo(?\Bar\Baz &$param = null) {}',
];

yield [
'<?php function foo(Baz & $param = null) {}',
'<?php function foo(?Baz & $param = null) {}',
];

yield [
'<?php function foo(\Baz & $param = null) {}',
'<?php function foo(?\Baz & $param = null) {}',
];

yield [
'<?php function foo(Bar\Baz & $param = null) {}',
'<?php function foo(?Bar\Baz & $param = null) {}',
];

yield [
'<?php function foo(\Bar\Baz & $param = null) {}',
'<?php function foo(?\Bar\Baz & $param = null) {}',
];

yield [
'<?php function foo(array &$param = null) {}',
'<?php function foo(?array &$param = null) {}',
];

yield [
'<?php function foo(array & $param = null) {}',
'<?php function foo(?array & $param = null) {}',
];

yield [
'<?php function foo(callable $param = null) {}',
'<?php function foo(?callable $param = null) {}',
];

yield [
'<?php $foo = function (Baz $param = null) {};',
'<?php $foo = function (?Baz $param = null) {};',
];

yield [
'<?php $foo = function (Baz &$param = null) {};',
'<?php $foo = function (?Baz &$param = null) {};',
];

yield [
'<?php $foo = function (Baz & $param = null) {};',
'<?php $foo = function (?Baz & $param = null) {};',
];

yield [
'<?php class Test { public function foo(Bar\Baz $param = null) {} }',
'<?php class Test { public function foo(?Bar\Baz $param = null) {} }',
];

yield [
'<?php class Test { public function foo(self $param = null) {} }',
'<?php class Test { public function foo(?self $param = null) {} }',
Expand All @@ -258,6 +288,7 @@ public function provideFixCases()
'<?php function foo(iterable $param = null) {}',
'<?php function foo(?iterable $param = null) {}',
];

yield [
'<?php $foo = function(array $a = null,
array $b = null, array $c = null, array
Expand All @@ -266,6 +297,7 @@ public function provideFixCases()
?array $b = null, ?array $c = null, ?array
$d = null) {};',
];

yield [
'<?php function foo(string $param = NULL) {}',
'<?php function foo(?string $param = NULL) {}',
Expand All @@ -278,10 +310,12 @@ public function provideNonInverseOnlyFixCases()
'<?php function foo( string $param = null) {}',
'<?php function foo( ?string $param = null) {}',
];

yield [
'<?php function foo(/*comment*/string $param = null) {}',
'<?php function foo(/*comment*/?string $param = null) {}',
];

yield [
'<?php function foo( /*comment*/ string $param = null) {}',
'<?php function foo( /*comment*/ ?string $param = null) {}',
Expand All @@ -294,10 +328,12 @@ public function provideInverseOnlyFixCases()
'<?php function foo(string $param = null) {}',
'<?php function foo(? string $param = null) {}',
];

yield [
'<?php function foo(/*comment*/string $param = null) {}',
'<?php function foo(?/*comment*/string $param = null) {}',
];

yield [
'<?php function foo(/*comment*/ string $param = null) {}',
'<?php function foo(? /*comment*/ string $param = null) {}',
Expand Down Expand Up @@ -336,22 +372,27 @@ public function provideFixPhp74Cases()
'<?php $foo = fn (string $param = null) => null;',
'<?php $foo = fn (?string $param = null) => null;',
];

yield [
'<?php $foo = fn (string &$param = null) => null;',
'<?php $foo = fn (?string &$param = null) => null;',
];

yield [
'<?php $foo = fn (Baz $param = null) => null;',
'<?php $foo = fn (?Baz $param = null) => null;',
];

yield [
'<?php $foo = fn (Baz &$param = null) => null;',
'<?php $foo = fn (?Baz &$param = null) => null;',
];

yield [
'<?php $foo = fn (Baz & $param = null) => null;',
'<?php $foo = fn (?Baz & $param = null) => null;',
];

yield [
'<?php $foo = fn(array $a = null,
array $b = null, array $c = null, array
Expand All @@ -361,4 +402,24 @@ public function provideFixPhp74Cases()
$d = null) => null;',
];
}

/**
* @param string $expected
* @param string $input
*
* @dataProvider provideFix80Cases
* @requires PHP 8.0
*/
public function testFix80($expected, $input)
{
$this->doTest($expected, $input);
}

public function provideFix80Cases()
{
yield [
'<?php function foo(?string $param = null,) {}',
'<?php function foo(string $param = null,) {}',
];
}
}
20 changes: 20 additions & 0 deletions tests/Fixer/FunctionNotation/RegularCallableCallFixerTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -196,4 +196,24 @@ function call_user_func($foo){}
',
];
}

/**
* @param string $expected
* @param string $input
*
* @dataProvider provideFix73Cases
* @requires PHP 7.3
*/
public function testFix73($expected, $input)
{
$this->doTest($expected, $input);
}

public function provideFix73Cases()
{
yield [
'<?php foo(1,);',
'<?php call_user_func("foo", 1,);',
];
}
}

0 comments on commit ac82d55

Please sign in to comment.