Skip to content

Commit

Permalink
Merge 1718ce5 into a230516
Browse files Browse the repository at this point in the history
  • Loading branch information
nightlinus committed Mar 24, 2020
2 parents a230516 + 1718ce5 commit 26a1a36
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 16 deletions.
43 changes: 27 additions & 16 deletions SlevomatCodingStandard/Sniffs/Namespaces/UnusedUsesSniff.php
Original file line number Diff line number Diff line change
Expand Up @@ -91,24 +91,17 @@ public function process(File $phpcsFile, $openTagPointer): void
if ($pointersBeforeUseStatements === []) {
$pointersBeforeUseStatements = [$startPointer];
}
$pointersBeforeUseStatementsCount = count($pointersBeforeUseStatements);

$allUsedNames = [];

foreach ($referencedNames as $referencedName) {
$pointer = $referencedName->getStartPointer();

if ($pointersBeforeUseStatementsCount === 1) {
$pointerBeforeUseStatements = $pointersBeforeUseStatements[0];
} else {
$pointerBeforeUseStatements = $startPointer;
foreach ($pointersBeforeUseStatements as $currentPointerBeforeUseStatements) {
if ($currentPointerBeforeUseStatements < $pointer) {
$pointerBeforeUseStatements = $currentPointerBeforeUseStatements;
break;
}
}
}
$pointerBeforeUseStatements = $this->firstPointerBefore(
$pointer,
$pointersBeforeUseStatements,
$startPointer
);

$name = $referencedName->getNameAsReferencedInFile();
$nameParts = NamespaceHelper::getNameParts($name);
Expand Down Expand Up @@ -156,10 +149,11 @@ public function process(File $phpcsFile, $openTagPointer): void
continue;
}

$pointerBeforeUseStatements = TokenHelper::findPrevious($phpcsFile, T_NAMESPACE, $docCommentOpenPointer - 1);
if ($pointerBeforeUseStatements === null) {
$pointerBeforeUseStatements = $startPointer;
}
$pointerBeforeUseStatements = $this->firstPointerBefore(
$docCommentOpenPointer - 1,
$pointersBeforeUseStatements,
$startPointer
);

if (!array_key_exists($pointerBeforeUseStatements, $fileUnusedNames)) {
$searchAnnotationsPointer = $tokens[$docCommentOpenPointer]['comment_closer'] + 1;
Expand Down Expand Up @@ -350,4 +344,21 @@ private function getIgnoredAnnotations(): array
return $this->normalizedIgnoredAnnotations;
}

/**
* @param int $pointer
* @param int[] $pointers
* @param int $startPointer
* @return int
*/
private function firstPointerBefore(int $pointer, array $pointers, int $startPointer): int
{
foreach ($pointers as $currentPointerBeforeUseStatements) {
if ($currentPointerBeforeUseStatements < $pointer) {
return $currentPointerBeforeUseStatements;
}
}

return $startPointer;
}

}
13 changes: 13 additions & 0 deletions tests/Sniffs/Namespaces/UnusedUsesSniffTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,19 @@ class UnusedUsesSniffTest extends TestCase

public function testUnusedUse(): void
{
self::assertEquals(5, $this->getFileReport()->getErrorCount());
self::assertSniffError(
$this->getFileReport(),
5,
UnusedUsesSniff::CODE_UNUSED_USE,
'First\ObjectPrototype'
);
self::assertSniffError(
$this->getFileReport(),
8,
UnusedUsesSniff::CODE_UNUSED_USE,
'My\ObjectPrototype (as MyObject)'
);
self::assertSniffError(
$this->getFileReport(),
12,
Expand All @@ -28,6 +35,12 @@ public function testUnusedUse(): void
UnusedUsesSniff::CODE_UNUSED_USE,
'FooBar\UNUSED_CONSTANT'
);
self::assertSniffError(
$this->getFileReport(),
16,
UnusedUsesSniff::CODE_UNUSED_USE,
'X'
);
}

public function testUnusedUseWithMultipleNamespaces(): void
Expand Down

0 comments on commit 26a1a36

Please sign in to comment.