diff --git a/src/Fixer/Alias/SetTypeToCastFixer.php b/src/Fixer/Alias/SetTypeToCastFixer.php index 71c2b8f03fe..b01b4af7698 100644 --- a/src/Fixer/Alias/SetTypeToCastFixer.php +++ b/src/Fixer/Alias/SetTypeToCastFixer.php @@ -82,7 +82,8 @@ protected function applyFix(\SplFileInfo $file, Tokens $tokens) } $prev = $tokens->getPrevMeaningfulToken($functionNameIndex); - if (!$tokens[$prev]->isGivenKind(T_OPEN_TAG) && !$tokens[$prev]->equalsAny([';', '{'])) { + + if (!$tokens[$prev]->equalsAny([';', '{', '}', [T_OPEN_TAG]])) { continue; // return value of the function is used } diff --git a/src/Tokenizer/TokensAnalyzer.php b/src/Tokenizer/TokensAnalyzer.php index bf1652d56f4..8881ae0904d 100644 --- a/src/Tokenizer/TokensAnalyzer.php +++ b/src/Tokenizer/TokensAnalyzer.php @@ -12,6 +12,8 @@ namespace PhpCsFixer\Tokenizer; +use PhpCsFixer\Tokenizer\Analyzer\GotoLabelAnalyzer; + /** * Analyzer of Tokens collection. * @@ -32,6 +34,11 @@ final class TokensAnalyzer */ private $tokens; + /** + * @var ?GotoLabelAnalyzer + */ + private $gotoLabelAnalyzer; + public function __construct(Tokens $tokens) { $this->tokens = $tokens; @@ -362,8 +369,14 @@ public function isConstantInvocation($index) } // check for goto label - if ($this->tokens[$nextIndex]->equals(':') && $this->tokens[$prevIndex]->equalsAny([';', '}', [T_OPEN_TAG], [T_OPEN_TAG_WITH_ECHO]])) { - return false; + if ($this->tokens[$nextIndex]->equals(':')) { + if (null === $this->gotoLabelAnalyzer) { + $this->gotoLabelAnalyzer = new GotoLabelAnalyzer(); + } + + if ($this->gotoLabelAnalyzer->belongsToGoToLabel($this->tokens, $nextIndex)) { + return false; + } } return true; diff --git a/tests/Fixer/ControlStructure/NoSuperfluousElseifFixerTest.php b/tests/Fixer/ControlStructure/NoSuperfluousElseifFixerTest.php index 8573501dccb..f9eb6b2275c 100644 --- a/tests/Fixer/ControlStructure/NoSuperfluousElseifFixerTest.php +++ b/tests/Fixer/ControlStructure/NoSuperfluousElseifFixerTest.php @@ -17,6 +17,7 @@ /** * @internal * + * @covers \PhpCsFixer\AbstractNoUselessElseFixer * @covers \PhpCsFixer\Fixer\ControlStructure\NoSuperfluousElseifFixer */ final class NoSuperfluousElseifFixerTest extends AbstractFixerTestCase diff --git a/tests/Fixer/ControlStructure/NoUselessElseFixerTest.php b/tests/Fixer/ControlStructure/NoUselessElseFixerTest.php index 29adffa66e6..54a09de082f 100644 --- a/tests/Fixer/ControlStructure/NoUselessElseFixerTest.php +++ b/tests/Fixer/ControlStructure/NoUselessElseFixerTest.php @@ -20,6 +20,7 @@ * * @internal * + * @covers \PhpCsFixer\AbstractNoUselessElseFixer * @covers \PhpCsFixer\Fixer\ControlStructure\NoUselessElseFixer */ final class NoUselessElseFixerTest extends AbstractFixerTestCase diff --git a/tests/Fixer/FunctionNotation/FopenFlagOrderFixerTest.php b/tests/Fixer/FunctionNotation/FopenFlagOrderFixerTest.php index 7b52006f934..211a63b8c0c 100644 --- a/tests/Fixer/FunctionNotation/FopenFlagOrderFixerTest.php +++ b/tests/Fixer/FunctionNotation/FopenFlagOrderFixerTest.php @@ -19,6 +19,7 @@ * * @internal * + * @covers \PhpCsFixer\AbstractFopenFlagFixer * @covers \PhpCsFixer\Fixer\FunctionNotation\FopenFlagOrderFixer */ final class FopenFlagOrderFixerTest extends AbstractFixerTestCase diff --git a/tests/Fixer/FunctionNotation/FopenFlagsFixerTest.php b/tests/Fixer/FunctionNotation/FopenFlagsFixerTest.php index 55fa16a3434..4d3d96ebe93 100644 --- a/tests/Fixer/FunctionNotation/FopenFlagsFixerTest.php +++ b/tests/Fixer/FunctionNotation/FopenFlagsFixerTest.php @@ -19,6 +19,7 @@ * * @internal * + * @covers \PhpCsFixer\AbstractFopenFlagFixer * @covers \PhpCsFixer\Fixer\FunctionNotation\FopenFlagsFixer */ final class FopenFlagsFixerTest extends AbstractFixerTestCase diff --git a/tests/RuleSet/RuleSetsTest.php b/tests/RuleSet/RuleSetsTest.php index 8fa95ec0487..bd6a92b4b4d 100644 --- a/tests/RuleSet/RuleSetsTest.php +++ b/tests/RuleSet/RuleSetsTest.php @@ -44,9 +44,19 @@ public function testGetSetDefinitions() static::assertIsString($name); static::assertTrue('@' === $name[0]); static::assertIsArray($set->getRules()); + static::assertSame($set, RuleSets::getSetDefinition($name)); } } + public function testGetUnknownSetDefinition() + { + $name = 'Unknown'; + $this->expectException(\InvalidArgumentException::class); + $this->expectExceptionMessageMatches(sprintf('#^Set "%s" does not exist\.$#', $name)); + + RuleSets::getSetDefinition($name); + } + /** * @dataProvider provideSetDefinitionNameCases *