From 87bc198573f4a1d260d3acb23a901df8d802be92 Mon Sep 17 00:00:00 2001 From: jrfnl Date: Sun, 2 Aug 2020 03:10:54 +0200 Subject: [PATCH] PHP 8.0 | Squiz/DisallowMultipleAssignments: correct errorcode for assignment in match expression The `Squiz.PHP.DisallowMultipleAssignments` sniff differentiates in the error code between "normal" assignments which aren't the only thing on a line and assignments in control structure conditions. This adds `match` to the list of control structures, so it gets the correct error code. Includes unit test. --- .../Sniffs/PHP/DisallowMultipleAssignmentsSniff.php | 1 + .../PHP/DisallowMultipleAssignmentsUnitTest.inc | 12 ++++++++++++ .../PHP/DisallowMultipleAssignmentsUnitTest.php | 2 ++ 3 files changed, 15 insertions(+) diff --git a/src/Standards/Squiz/Sniffs/PHP/DisallowMultipleAssignmentsSniff.php b/src/Standards/Squiz/Sniffs/PHP/DisallowMultipleAssignmentsSniff.php index 84032fec01..b0372837fc 100644 --- a/src/Standards/Squiz/Sniffs/PHP/DisallowMultipleAssignmentsSniff.php +++ b/src/Standards/Squiz/Sniffs/PHP/DisallowMultipleAssignmentsSniff.php @@ -165,6 +165,7 @@ public function process(File $phpcsFile, $stackPtr) T_SWITCH => T_SWITCH, T_CASE => T_CASE, T_FOR => T_FOR, + T_MATCH => T_MATCH, ]; foreach ($nested as $opener => $closer) { if (isset($tokens[$opener]['parenthesis_owner']) === true diff --git a/src/Standards/Squiz/Tests/PHP/DisallowMultipleAssignmentsUnitTest.inc b/src/Standards/Squiz/Tests/PHP/DisallowMultipleAssignmentsUnitTest.inc index 98c1bb5661..6d86dc54b8 100644 --- a/src/Standards/Squiz/Tests/PHP/DisallowMultipleAssignmentsUnitTest.inc +++ b/src/Standards/Squiz/Tests/PHP/DisallowMultipleAssignmentsUnitTest.inc @@ -75,3 +75,15 @@ class Bar public bool $c = false, $d = true; protected int $e = 123, $f = 987; } + +switch ($b < 10 && $a = 10) { + case true: + break; +} + +$array = [ + match ($b < 10 && $a = 10) { + true => 10, + false => 0 + }, +]; diff --git a/src/Standards/Squiz/Tests/PHP/DisallowMultipleAssignmentsUnitTest.php b/src/Standards/Squiz/Tests/PHP/DisallowMultipleAssignmentsUnitTest.php index 919d4570d0..618d76efa4 100644 --- a/src/Standards/Squiz/Tests/PHP/DisallowMultipleAssignmentsUnitTest.php +++ b/src/Standards/Squiz/Tests/PHP/DisallowMultipleAssignmentsUnitTest.php @@ -33,6 +33,8 @@ public function getErrorList() 12 => 1, 14 => 1, 15 => 1, + 79 => 1, + 85 => 1, ]; }//end getErrorList()