From 17731a140b3a38e2bfe9349a9f711d464a96aab8 Mon Sep 17 00:00:00 2001 From: jrfnl Date: Sat, 13 Jul 2024 03:45:06 +0200 Subject: [PATCH] Squiz/DisallowMultipleAssignments: fix sniff walking back too far when going in/out of PHP The sniff did not recognize that when it would encounter a PHP close tag, it had reached a previous statement, leading to false positives for list assignments. Fixed now. Includes tests. Fixes 537 --- .../PHP/DisallowMultipleAssignmentsSniff.php | 5 ++-- .../DisallowMultipleAssignmentsUnitTest.inc | 26 +++++++++++++++++++ 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/src/Standards/Squiz/Sniffs/PHP/DisallowMultipleAssignmentsSniff.php b/src/Standards/Squiz/Sniffs/PHP/DisallowMultipleAssignmentsSniff.php index 06df652040..b66e5bca17 100644 --- a/src/Standards/Squiz/Sniffs/PHP/DisallowMultipleAssignmentsSniff.php +++ b/src/Standards/Squiz/Sniffs/PHP/DisallowMultipleAssignmentsSniff.php @@ -83,9 +83,8 @@ public function process(File $phpcsFile, $stackPtr) */ for ($varToken = ($stackPtr - 1); $varToken >= 0; $varToken--) { - if (in_array($tokens[$varToken]['code'], [T_SEMICOLON, T_OPEN_CURLY_BRACKET], true) === true) { - // We've reached the next statement, so we - // didn't find a variable. + if (in_array($tokens[$varToken]['code'], [T_SEMICOLON, T_OPEN_CURLY_BRACKET, T_CLOSE_TAG], true) === true) { + // We've reached the previous statement, so we didn't find a variable. return; } diff --git a/src/Standards/Squiz/Tests/PHP/DisallowMultipleAssignmentsUnitTest.inc b/src/Standards/Squiz/Tests/PHP/DisallowMultipleAssignmentsUnitTest.inc index f657fb4a4c..b4d63fcad0 100644 --- a/src/Standards/Squiz/Tests/PHP/DisallowMultipleAssignmentsUnitTest.inc +++ b/src/Standards/Squiz/Tests/PHP/DisallowMultipleAssignmentsUnitTest.inc @@ -108,3 +108,29 @@ function () { $b = getB(); }; +?> + + +// Issue PHPCSStandards/PHP_CodeSniffer#537. + + + + + + + + + + + +