From 2b1e42ee3e17f0d126594cd4ff0f88dd4e89639d Mon Sep 17 00:00:00 2001 From: Julien Falque Date: Mon, 3 May 2021 21:43:06 +0200 Subject: [PATCH] Fix group_import failing case --- src/Fixer/Import/GroupImportFixer.php | 20 +-- tests/Fixer/Import/GroupImportFixerTest.php | 183 ++++++++++++-------- 2 files changed, 113 insertions(+), 90 deletions(-) diff --git a/src/Fixer/Import/GroupImportFixer.php b/src/Fixer/Import/GroupImportFixer.php index 4e3ba3641d8..1e69630f137 100644 --- a/src/Fixer/Import/GroupImportFixer.php +++ b/src/Fixer/Import/GroupImportFixer.php @@ -144,18 +144,10 @@ private function removeSingleUseStatements(array $statements, Tokens $tokens) private function addGroupUseStatements(array $statements, Tokens $tokens) { $currentUseDeclaration = null; - $insertIndex = \array_slice($statements, -1)[0]->getEndIndex(); - - while ($tokens[$insertIndex]->isGivenKind([T_COMMENT, T_DOC_COMMENT])) { - ++$insertIndex; - } + $insertIndex = \array_slice($statements, -1)[0]->getEndIndex() + 1; foreach ($statements as $index => $useDeclaration) { if ($this->areDeclarationsDifferent($currentUseDeclaration, $useDeclaration)) { - if ($index > 1) { - ++$insertIndex; - } - $currentUseDeclaration = $useDeclaration; $insertIndex += $this->createNewGroup( $tokens, @@ -170,11 +162,11 @@ private function addGroupUseStatements(array $statements, Tokens $tokens) ]; if ($useDeclaration->isAliased()) { - $tokens->insertAt($insertIndex + 1, $newTokens); + $tokens->insertAt($insertIndex, $newTokens); $insertIndex += \count($newTokens); $newTokens = []; - $insertIndex += $this->insertToGroupUseWithAlias($tokens, $insertIndex + 1, $useDeclaration); + $insertIndex += $this->insertToGroupUseWithAlias($tokens, $insertIndex, $useDeclaration); } $newTokens[] = new Token([T_STRING, $useDeclaration->getShortName()]); @@ -185,7 +177,7 @@ private function addGroupUseStatements(array $statements, Tokens $tokens) $newTokens[] = new Token([T_WHITESPACE, "\n"]); } - $tokens->insertAt($insertIndex + 1, $newTokens); + $tokens->insertAt($insertIndex, $newTokens); $insertIndex += \count($newTokens); } } @@ -222,7 +214,7 @@ private function insertToGroupUseWithAlias(Tokens $tokens, $insertIndex, Namespa $tokens->insertAt($insertIndex, $newTokens); - return \count($newTokens); + return \count($newTokens) + 1; } /** @@ -276,7 +268,7 @@ private function createNewGroup(Tokens $tokens, $insertIndex, NamespaceUseAnalys $insertIndex += $inserted; } - $tokens->insertAt($insertIndex + 1, new Token([T_STRING, $useDeclaration->getShortName()])); + $tokens->insertAt($insertIndex, new Token([T_STRING, $useDeclaration->getShortName()])); ++$insertedTokens; return $insertedTokens; diff --git a/tests/Fixer/Import/GroupImportFixerTest.php b/tests/Fixer/Import/GroupImportFixerTest.php index 48ebd058368..1fe772cc116 100644 --- a/tests/Fixer/Import/GroupImportFixerTest.php +++ b/tests/Fixer/Import/GroupImportFixerTest.php @@ -54,15 +54,14 @@ public function testFix($expected, $input = null) public function provideFixCases() { - $tests = [ - [ - ' $test) { - yield $index => $test; - } + yield [ + '