From 6cc41f7f3d710fa27fe46fd9b2cd5f2109cad8c8 Mon Sep 17 00:00:00 2001 From: Vincent Langlet Date: Wed, 8 May 2019 23:22:33 +0200 Subject: [PATCH] Review --- .../CodeAnalysis/EmptyPHPStatementSniff.php | 32 ++++--------------- .../EmptyPHPStatementUnitTest.inc | 1 + .../EmptyPHPStatementUnitTest.inc.fixed | 1 + 3 files changed, 9 insertions(+), 25 deletions(-) diff --git a/src/Standards/Generic/Sniffs/CodeAnalysis/EmptyPHPStatementSniff.php b/src/Standards/Generic/Sniffs/CodeAnalysis/EmptyPHPStatementSniff.php index 63ed99b0c3..1e74c85b74 100644 --- a/src/Standards/Generic/Sniffs/CodeAnalysis/EmptyPHPStatementSniff.php +++ b/src/Standards/Generic/Sniffs/CodeAnalysis/EmptyPHPStatementSniff.php @@ -20,27 +20,6 @@ class EmptyPHPStatementSniff implements Sniff { - /** - * Any token that should not have a scope_closer followed by a semi-colon. - * - * @var int[] - */ - private $conditionTokens = [ - T_IF, - T_SWITCH, - T_CASE, - T_WHILE, - T_ELSE, - T_ELSEIF, - T_FOR, - T_FOREACH, - T_DO, - T_TRY, - T_CATCH, - T_FINALLY, - ]; - - /** * Returns an array of tokens this test wants to listen for. * @@ -74,15 +53,18 @@ public function process(File $phpcsFile, $stackPtr) case 'T_SEMICOLON': $prevNonEmpty = $phpcsFile->findPrevious(Tokens::$emptyTokens, ($stackPtr - 1), null, true); - if ($prevNonEmpty === false - || ($tokens[$prevNonEmpty]['code'] !== T_SEMICOLON + if ($prevNonEmpty === false) { + return; + } + + if ($tokens[$prevNonEmpty]['code'] !== T_SEMICOLON && $tokens[$prevNonEmpty]['code'] !== T_OPEN_TAG - && $tokens[$prevNonEmpty]['code'] !== T_OPEN_TAG_WITH_ECHO) + && $tokens[$prevNonEmpty]['code'] !== T_OPEN_TAG_WITH_ECHO ) { // Still detect `if (foo) {};`. if ($tokens[$prevNonEmpty]['code'] !== T_CLOSE_CURLY_BRACKET || isset($tokens[$prevNonEmpty]['scope_condition']) === false - || in_array($tokens[$tokens[$prevNonEmpty]['scope_condition']]['code'], $this->conditionTokens) === false + || in_array($tokens[$tokens[$prevNonEmpty]['scope_condition']]['code'], [T_CLOSURE, T_ANON_CLASS]) === true ) { return; } diff --git a/src/Standards/Generic/Tests/CodeAnalysis/EmptyPHPStatementUnitTest.inc b/src/Standards/Generic/Tests/CodeAnalysis/EmptyPHPStatementUnitTest.inc index f46906f14f..1399c1889a 100644 --- a/src/Standards/Generic/Tests/CodeAnalysis/EmptyPHPStatementUnitTest.inc +++ b/src/Standards/Generic/Tests/CodeAnalysis/EmptyPHPStatementUnitTest.inc @@ -63,3 +63,4 @@ while (true) {}; // Do not break closure and anonymous class; $a = function () {}; $b = new class {}; +echo $a{0}; diff --git a/src/Standards/Generic/Tests/CodeAnalysis/EmptyPHPStatementUnitTest.inc.fixed b/src/Standards/Generic/Tests/CodeAnalysis/EmptyPHPStatementUnitTest.inc.fixed index b33c01b22f..96f51a0ca4 100644 --- a/src/Standards/Generic/Tests/CodeAnalysis/EmptyPHPStatementUnitTest.inc.fixed +++ b/src/Standards/Generic/Tests/CodeAnalysis/EmptyPHPStatementUnitTest.inc.fixed @@ -58,3 +58,4 @@ while (true) {} // Do not break closure and anonymous class; $a = function () {}; $b = new class {}; +echo $a{0};