SpacePossum 4 years ago
parent
commit
114ac85636

+ 2 - 1
src/Fixer/Alias/SetTypeToCastFixer.php

@@ -82,7 +82,8 @@ settype($bar, "null");
             }
 
             $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
             }
 

+ 15 - 2
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 @@ final class TokensAnalyzer
         }
 
         // 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;

+ 1 - 0
tests/Fixer/ControlStructure/NoSuperfluousElseifFixerTest.php

@@ -17,6 +17,7 @@ use PhpCsFixer\Tests\Test\AbstractFixerTestCase;
 /**
  * @internal
  *
+ * @covers \PhpCsFixer\AbstractNoUselessElseFixer
  * @covers \PhpCsFixer\Fixer\ControlStructure\NoSuperfluousElseifFixer
  */
 final class NoSuperfluousElseifFixerTest extends AbstractFixerTestCase

+ 1 - 0
tests/Fixer/ControlStructure/NoUselessElseFixerTest.php

@@ -20,6 +20,7 @@ use PhpCsFixer\Tokenizer\Tokens;
  *
  * @internal
  *
+ * @covers \PhpCsFixer\AbstractNoUselessElseFixer
  * @covers \PhpCsFixer\Fixer\ControlStructure\NoUselessElseFixer
  */
 final class NoUselessElseFixerTest extends AbstractFixerTestCase

+ 1 - 0
tests/Fixer/FunctionNotation/FopenFlagOrderFixerTest.php

@@ -19,6 +19,7 @@ use PhpCsFixer\Tests\Test\AbstractFixerTestCase;
  *
  * @internal
  *
+ * @covers \PhpCsFixer\AbstractFopenFlagFixer
  * @covers \PhpCsFixer\Fixer\FunctionNotation\FopenFlagOrderFixer
  */
 final class FopenFlagOrderFixerTest extends AbstractFixerTestCase

+ 1 - 0
tests/Fixer/FunctionNotation/FopenFlagsFixerTest.php

@@ -19,6 +19,7 @@ use PhpCsFixer\Tests\Test\AbstractFixerTestCase;
  *
  * @internal
  *
+ * @covers \PhpCsFixer\AbstractFopenFlagFixer
  * @covers \PhpCsFixer\Fixer\FunctionNotation\FopenFlagsFixer
  */
 final class FopenFlagsFixerTest extends AbstractFixerTestCase

+ 10 - 0
tests/RuleSet/RuleSetsTest.php

@@ -44,9 +44,19 @@ final class RuleSetsTest extends TestCase
             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
      *