From 9c2b88c42fbd9f0a58bb79b5a5172fc600ac0510 Mon Sep 17 00:00:00 2001 From: Payton Swick Date: Fri, 12 Nov 2021 15:58:14 -0500 Subject: [PATCH 1/3] Find T_NAME_QUALIFIED when looking for imported symbols --- ImportDetection/SniffHelpers.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ImportDetection/SniffHelpers.php b/ImportDetection/SniffHelpers.php index 049d487..6df62a3 100644 --- a/ImportDetection/SniffHelpers.php +++ b/ImportDetection/SniffHelpers.php @@ -165,7 +165,7 @@ public function getImportedSymbolsFromImportStatement(File $phpcsFile, $stackPtr if (! $endOfImportPtr) { $endOfImportPtr = $endOfStatementPtr; } - $lastStringPtr = $phpcsFile->findPrevious([T_STRING], $endOfImportPtr - 1, $stackPtr); + $lastStringPtr = $phpcsFile->findPrevious([T_STRING, T_NAME_QUALIFIED], $endOfImportPtr - 1, $stackPtr); if (! $lastStringPtr || ! isset($tokens[$lastStringPtr])) { return []; } From 060b73f844c17046f9586df2be1355918e5bb226 Mon Sep 17 00:00:00 2001 From: Payton Swick Date: Fri, 12 Nov 2021 15:58:48 -0500 Subject: [PATCH 2/3] Do not bother reconstructing qualified symbols --- ImportDetection/SniffHelpers.php | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/ImportDetection/SniffHelpers.php b/ImportDetection/SniffHelpers.php index 6df62a3..b4651f6 100644 --- a/ImportDetection/SniffHelpers.php +++ b/ImportDetection/SniffHelpers.php @@ -243,9 +243,15 @@ public function isTokenADefinition(array $token): bool { public function getFullSymbol($phpcsFile, $stackPtr): Symbol { $originalPtr = $stackPtr; $tokens = $phpcsFile->getTokens(); + + $currentToken = Symbol::getTokenWithPosition($tokens[$stackPtr], $stackPtr); + + if ($tokens[$stackPtr]['type'] === 'T_NAME_QUALIFIED') { + return new Symbol([$currentToken]); + } + // go backwards and forward and collect all the tokens until we encounter // anything other than a backslash or a string - $currentToken = Symbol::getTokenWithPosition($tokens[$stackPtr], $stackPtr); $fullSymbolParts = []; while ($this->isTokenASymbolPart($currentToken)) { $fullSymbolParts[] = $currentToken; From b8feee18a220f2138913938f4f6a130967f6227e Mon Sep 17 00:00:00 2001 From: Payton Swick Date: Fri, 12 Nov 2021 15:59:18 -0500 Subject: [PATCH 3/3] Return qualified symbol aliases --- ImportDetection/Symbol.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ImportDetection/Symbol.php b/ImportDetection/Symbol.php index 142b5d2..a0d1a91 100644 --- a/ImportDetection/Symbol.php +++ b/ImportDetection/Symbol.php @@ -39,6 +39,10 @@ public function getAlias(): string { if ($this->alias) { return $this->alias->getName(); } + if (count($this->tokens) === 1 && $this->tokens[0]['type'] === 'T_NAME_QUALIFIED') { + $parts = explode('\\', $this->tokens[0]['content']); + return $parts[count($parts) - 1]; + } return $this->tokens[count($this->tokens) - 1]['content']; }