Skip to content

Commit d93b9d4

Browse files
committed
ReferencedNameHelper - result contains traits used in a class
1 parent f39a5e6 commit d93b9d4

File tree

5 files changed

+36
-1
lines changed

5 files changed

+36
-1
lines changed

SlevomatCodingStandard/Helpers/ReferencedNameHelper.php

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -157,13 +157,23 @@ private static function isReferencedName(PHP_CodeSniffer_File $phpcsFile, $start
157157

158158
$skipTokenCodes = [
159159
T_FUNCTION,
160-
T_USE,
161160
T_AS,
162161
T_DOUBLE_COLON,
163162
T_OBJECT_OPERATOR,
164163
T_NAMESPACE,
165164
];
166165

166+
if ($previousToken['code'] === T_USE) {
167+
$classPointer = $phpcsFile->findPrevious(T_CLASS, $startPointer - 1);
168+
if ($classPointer !== false) {
169+
$tokens = $phpcsFile->getTokens();
170+
$classToken = $tokens[$classPointer];
171+
return $startPointer > $classToken['scope_opener'] && $startPointer < $classToken['scope_closer'];
172+
}
173+
174+
return false;
175+
}
176+
167177
return !in_array(
168178
$previousToken['code'],
169179
array_merge($skipTokenCodes, TokenHelper::$typeKeywordTokenCodes),

tests/Helpers/ReferencedNameHelperTest.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ public function dataGetAllReferencedNames()
1212
[
1313
'\ExtendedClass',
1414
'\ImplementedInterface',
15+
'\FullyQualified\SomeOtherTrait',
16+
'SomeTrait',
1517
'TypehintedName',
1618
'ClassInstance',
1719
'StaticClass',
@@ -24,6 +26,8 @@ public function dataGetAllReferencedNames()
2426
[
2527
'\ExtendedClass',
2628
'\ImplementedInterface',
29+
'\FullyQualified\SomeOtherTrait',
30+
'SomeTrait',
2731
'ORM\Column',
2832
'Bar',
2933
'Lorem',

tests/Helpers/data/lotsOfReferencedNames.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@
88
class FooClass extends \ExtendedClass implements \ImplementedInterface
99
{
1010

11+
use \FullyQualified\SomeOtherTrait;
12+
use SomeTrait;
13+
1114
/** @ORM\Column(name="foo") */
1215
private $foo;
1316

tests/Sniffs/Namespaces/UnusedUsesSniffTest.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,4 +72,10 @@ public function testReportCaseInsensitiveUse()
7272
);
7373
}
7474

75+
public function testUsedTrait()
76+
{
77+
$report = $this->checkFile(__DIR__ . '/data/usedTrait.php');
78+
$this->assertNoSniffError($report, 5);
79+
}
80+
7581
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<?php
2+
3+
namespace BarNamespace;
4+
5+
use SomeTrait;
6+
7+
class Foo
8+
{
9+
10+
use SomeTrait;
11+
12+
}

0 commit comments

Comments
 (0)