Browse Source

Merge branch '2.2' into 2.3

# Conflicts:
#	src/Fixer/Alias/NoMixedEchoPrintFixer.php
#	src/Fixer/Alias/PowToExponentiationFixer.php
#	src/Fixer/ArrayNotation/ArraySyntaxFixer.php
#	src/Fixer/ClassNotation/ClassDefinitionFixer.php
#	src/Fixer/ClassNotation/NoPhp4ConstructorFixer.php
#	src/Fixer/ClassNotation/ProtectedToPrivateFixer.php
#	src/Fixer/ControlStructure/ElseifFixer.php
#	src/Fixer/ControlStructure/IncludeFixer.php
#	src/Fixer/ControlStructure/NoUnneededControlParenthesesFixer.php
#	src/Fixer/FunctionNotation/MethodArgumentSpaceFixer.php
#	src/Fixer/Import/NoUnusedImportsFixer.php
#	src/Fixer/Import/OrderedImportsFixer.php
#	src/Fixer/LanguageConstruct/DirConstantFixer.php
#	src/Fixer/LanguageConstruct/FunctionToConstantFixer.php
#	src/Fixer/Operator/PreIncrementFixer.php
#	src/Fixer/Operator/TernaryToNullCoalescingFixer.php
#	src/Fixer/PhpTag/NoShortEchoTagFixer.php
#	src/Fixer/PhpUnit/PhpUnitDedicateAssertFixer.php
#	src/Fixer/Phpdoc/PhpdocIndentFixer.php
#	src/Fixer/Phpdoc/PhpdocSingleLineVarSpacingFixer.php
#	src/Fixer/Phpdoc/PhpdocToCommentFixer.php
#	src/Fixer/Strict/StrictComparisonFixer.php
#	src/Fixer/StringNotation/HeredocToNowdocFixer.php
#	src/Fixer/StringNotation/SingleQuoteFixer.php
#	src/Fixer/Whitespace/LineEndingFixer.php
#	src/Tokenizer/Tokens.php
#	src/Tokenizer/Transformer/ArrayTypehintTransformer.php
#	src/Tokenizer/Transformer/BraceClassInstantiationTransformer.php
#	src/Tokenizer/Transformer/ClassConstantTransformer.php
#	src/Tokenizer/Transformer/CurlyBraceTransformer.php
#	src/Tokenizer/Transformer/ImportTransformer.php
#	src/Tokenizer/Transformer/NamespaceOperatorTransformer.php
#	src/Tokenizer/Transformer/NullableTypeTransformer.php
#	src/Tokenizer/Transformer/ReturnRefTransformer.php
#	src/Tokenizer/Transformer/SquareBraceTransformer.php
#	src/Tokenizer/Transformer/TypeAlternationTransformer.php
#	src/Tokenizer/Transformer/TypeColonTransformer.php
#	src/Tokenizer/Transformer/UseTransformer.php
#	tests/Tokenizer/TokenTest.php
#	tests/Tokenizer/TokensTest.php
#	tests/UtilsTest.php
Dariusz Ruminski 7 years ago
parent
commit
edb5009108

+ 1 - 1
doc/COOKBOOK-FIXERS.md

@@ -396,7 +396,7 @@ final class RemoveCommentsFixer extends AbstractFixer {
             $prevToken = $tokens[$prevTokenIndex];
 
             if ($prevToken->equals(';')) {
-                $token->clear();
+                $tokens->clearAt($index);
             }
         }
     }

+ 1 - 1
src/AbstractDoctrineAnnotationFixer.php

@@ -49,7 +49,7 @@ abstract class AbstractDoctrineAnnotationFixer extends AbstractFixer implements
                 $this->configuration['ignored_tags']
             );
             $this->fixAnnotations($tokens);
-            $docCommentToken->setContent($tokens->getCode());
+            $phpTokens[$index] = new PhpToken([T_DOC_COMMENT, $tokens->getCode()]);
         }
     }
 

+ 7 - 4
src/AbstractLinesBeforeNamespaceFixer.php

@@ -12,6 +12,7 @@
 
 namespace PhpCsFixer;
 
+use PhpCsFixer\Tokenizer\Token;
 use PhpCsFixer\Tokenizer\Tokens;
 
 /**
@@ -42,11 +43,13 @@ abstract class AbstractLinesBeforeNamespaceFixer extends AbstractFixer
             }
         }
 
-        $previous = $tokens[$index - 1];
+        $previousIndex = $index - 1;
+        $previous = $tokens[$previousIndex];
         if ($previous->isWhitespace()) {
-            $content = $previous->getContent();
-            if (substr_count($content, "\n") !== $expected) {
-                $previous->setContent(str_repeat("\n", $expected));
+            if (0 === $expected) {
+                $tokens->clearAt($previousIndex);
+            } elseif (substr_count($previous->getContent(), "\n") !== $expected) {
+                $tokens[$previousIndex] = new Token([T_WHITESPACE, str_repeat("\n", $expected)]);
             }
         }
     }

+ 3 - 2
src/AbstractPhpdocTypesFixer.php

@@ -14,6 +14,7 @@ namespace PhpCsFixer;
 
 use PhpCsFixer\DocBlock\Annotation;
 use PhpCsFixer\DocBlock\DocBlock;
+use PhpCsFixer\Tokenizer\Token;
 use PhpCsFixer\Tokenizer\Tokens;
 
 /**
@@ -55,7 +56,7 @@ abstract class AbstractPhpdocTypesFixer extends AbstractFixer
      */
     protected function applyFix(\SplFileInfo $file, Tokens $tokens)
     {
-        foreach ($tokens as $token) {
+        foreach ($tokens as $index => $token) {
             if (!$token->isGivenKind(T_DOC_COMMENT)) {
                 continue;
             }
@@ -71,7 +72,7 @@ abstract class AbstractPhpdocTypesFixer extends AbstractFixer
                 $this->fixTypes($annotation);
             }
 
-            $token->setContent($doc->getContent());
+            $tokens[$index] = new Token([T_DOC_COMMENT, $doc->getContent()]);
         }
     }
 

+ 3 - 2
src/Fixer/Alias/EregToPregFixer.php

@@ -15,6 +15,7 @@ namespace PhpCsFixer\Fixer\Alias;
 use PhpCsFixer\AbstractFixer;
 use PhpCsFixer\FixerDefinition\CodeSample;
 use PhpCsFixer\FixerDefinition\FixerDefinition;
+use PhpCsFixer\Tokenizer\Token;
 use PhpCsFixer\Tokenizer\Tokens;
 use PhpCsFixer\Utils;
 
@@ -124,8 +125,8 @@ final class EregToPregFixer extends AbstractFixer
                 }
 
                 // modify function and argument
-                $tokens[$match[2]]->setContent($quote.$preg.$quote);
-                $tokens[$match[0]]->setContent($map[1]);
+                $tokens[$match[0]] = new Token([T_STRING, $map[1]]);
+                $tokens[$match[2]] = new Token([T_CONSTANT_ENCAPSED_STRING, $quote.$preg.$quote]);
             }
         }
     }

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

@@ -15,6 +15,7 @@ namespace PhpCsFixer\Fixer\Alias;
 use PhpCsFixer\AbstractFunctionReferenceFixer;
 use PhpCsFixer\FixerDefinition\CodeSample;
 use PhpCsFixer\FixerDefinition\FixerDefinition;
+use PhpCsFixer\Tokenizer\Token;
 use PhpCsFixer\Tokenizer\Tokens;
 
 /**
@@ -102,7 +103,7 @@ $a = substr_count($a, $b);
                 // analysing cursor shift, so nested calls could be processed
                 $currIndex = $openParenthesis;
 
-                $tokens[$functionName]->setContent($functionReplacement['alternativeName']);
+                $tokens[$functionName] = new Token([T_STRING, $functionReplacement['alternativeName']]);
             }
         }
     }

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

@@ -16,6 +16,7 @@ use PhpCsFixer\AbstractFixer;
 use PhpCsFixer\FixerDefinition\CodeSample;
 use PhpCsFixer\FixerDefinition\FixerDefinition;
 use PhpCsFixer\Tokenizer\CT;
+use PhpCsFixer\Tokenizer\Token;
 use PhpCsFixer\Tokenizer\Tokens;
 
 /**
@@ -131,7 +132,7 @@ $a = strchr($haystack, $needle);
                 }
             }
 
-            $token->setContent(self::$aliases[$tokenContent]);
+            $tokens[$index] = new Token([T_STRING, self::$aliases[$tokenContent]]);
         }
     }
 }

+ 3 - 2
src/Fixer/Alias/NoMixedEchoPrintFixer.php

@@ -19,6 +19,7 @@ use PhpCsFixer\FixerConfiguration\FixerOptionBuilder;
 use PhpCsFixer\FixerDefinition\CodeSample;
 use PhpCsFixer\FixerDefinition\FixerDefinition;
 use PhpCsFixer\Tokenizer\CT;
+use PhpCsFixer\Tokenizer\Token;
 use PhpCsFixer\Tokenizer\Tokens;
 
 /**
@@ -154,7 +155,7 @@ final class NoMixedEchoPrintFixer extends AbstractFixer implements Configuration
             return;
         }
 
-        $tokens->overrideAt($index, [T_PRINT, 'print']);
+        $tokens[$index] = new Token([T_PRINT, 'print']);
     }
 
     /**
@@ -169,6 +170,6 @@ final class NoMixedEchoPrintFixer extends AbstractFixer implements Configuration
             return;
         }
 
-        $tokens->overrideAt($index, [T_ECHO, 'echo']);
+        $tokens[$index] = new Token([T_ECHO, 'echo']);
     }
 }

+ 6 - 9
src/Fixer/Alias/PowToExponentiationFixer.php

@@ -134,13 +134,10 @@ final class PowToExponentiationFixer extends AbstractFunctionReferenceFixer
     {
         // find the argument separator ',' directly after the last token of the first argument;
         // replace it with T_POW '**'
-        $tokens->overrideAt(
-            $tokens->getNextTokenOfKind(reset($arguments), [',']),
-            new Token([T_POW, '**'])
-        );
+        $tokens[$tokens->getNextTokenOfKind(reset($arguments), [','])] = new Token([T_POW, '**']);
 
         // clean up the function call tokens prt. I
-        $tokens[$closeParenthesisIndex]->clear();
+        $tokens->clearAt($closeParenthesisIndex);
 
         $added = 0;
         // check if the arguments need to be wrapped in parenthesis
@@ -153,12 +150,12 @@ final class PowToExponentiationFixer extends AbstractFunctionReferenceFixer
         }
 
         // clean up the function call tokens prt. II
-        $tokens[$openParenthesisIndex]->clear();
-        $tokens[$functionNameIndex]->clear();
+        $tokens->clearAt($openParenthesisIndex);
+        $tokens->clearAt($functionNameIndex);
 
         $prev = $tokens->getPrevMeaningfulToken($functionNameIndex);
         if ($tokens[$prev]->isGivenKind(T_NS_SEPARATOR)) {
-            $tokens[$prev]->clear();
+            $tokens->clearAt($prev);
         }
 
         return $added;
@@ -180,7 +177,7 @@ final class PowToExponentiationFixer extends AbstractFunctionReferenceFixer
         ];
 
         for ($i = $argumentStartIndex; $i <= $argumentEndIndex; ++$i) {
-            if ($tokens[$i]->isGivenKind($allowedKinds) || $tokens[$i]->isEmpty()) {
+            if ($tokens[$i]->isGivenKind($allowedKinds) || $tokens->isEmptyAt($i)) {
                 continue;
             }
 

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

@@ -18,6 +18,7 @@ use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverRootless;
 use PhpCsFixer\FixerConfiguration\FixerOptionBuilder;
 use PhpCsFixer\FixerDefinition\CodeSample;
 use PhpCsFixer\FixerDefinition\FixerDefinition;
+use PhpCsFixer\Tokenizer\Token;
 use PhpCsFixer\Tokenizer\Tokens;
 use Symfony\Component\OptionsResolver\Exception\InvalidOptionsException;
 
@@ -106,7 +107,7 @@ final class RandomApiMigrationFixer extends AbstractFunctionReferenceFixer imple
                 // analysing cursor shift, so nested calls could be processed
                 $currIndex = $openParenthesis;
 
-                $tokens[$functionName]->setContent($functionReplacement['alternativeName']);
+                $tokens[$functionName] = new Token([T_STRING, $functionReplacement['alternativeName']]);
             }
         }
     }

Some files were not shown because too many files changed in this diff