Skip to content

Commit 0249deb

Browse files
committed
Cleanup based on dev version of PHPCS
1 parent 405f92e commit 0249deb

File tree

5 files changed

+29
-106
lines changed

5 files changed

+29
-106
lines changed

SlevomatCodingStandard/Helpers/ReferencedNameHelper.php

Lines changed: 26 additions & 92 deletions
Original file line numberDiff line numberDiff line change
@@ -9,20 +9,17 @@
99
use function array_values;
1010
use function count;
1111
use function in_array;
12-
use function substr;
13-
use function trim;
1412
use const T_ANON_CLASS;
1513
use const T_ARRAY;
1614
use const T_AS;
15+
use const T_ATTRIBUTE;
1716
use const T_BITWISE_AND;
1817
use const T_BITWISE_OR;
1918
use const T_CATCH;
2019
use const T_CLASS;
2120
use const T_CLOSE_PARENTHESIS;
22-
use const T_CLOSE_SQUARE_BRACKET;
2321
use const T_COLON;
2422
use const T_COMMA;
25-
use const T_COMMENT;
2623
use const T_CONST;
2724
use const T_DECLARE;
2825
use const T_DOUBLE_COLON;
@@ -139,20 +136,16 @@ private static function createAllReferencedNames(File $phpcsFile, int $openTagPo
139136
}
140137

141138
// Attributes are parsed in specific method
142-
$attributeStartPointerBefore = TokenHelper::findPrevious(
143-
$phpcsFile,
144-
TokenHelper::getAttributeTokenCode(),
145-
$nameStartPointer - 1
146-
);
147-
if ($attributeStartPointerBefore !== null && StringHelper::startsWith($tokens[$attributeStartPointerBefore]['content'], '#[')) {
148-
$attributeEndPointerBefore = self::getAttributeEndPointer($phpcsFile, $attributeStartPointerBefore);
149-
if ($attributeEndPointerBefore > $nameStartPointer) {
150-
$beginSearchAtPointer = $attributeEndPointerBefore + 1;
139+
$attributeStartPointerBefore = TokenHelper::findPrevious($phpcsFile, T_ATTRIBUTE, $nameStartPointer - 1);
140+
if ($attributeStartPointerBefore !== null) {
141+
if ($tokens[$attributeStartPointerBefore]['attribute_closer'] > $nameStartPointer) {
142+
$beginSearchAtPointer = $tokens[$attributeStartPointerBefore]['attribute_closer'] + 1;
151143
continue;
152144
}
153145
}
154146

155147
if (!self::isReferencedName($phpcsFile, $nameStartPointer)) {
148+
/** @var int $beginSearchAtPointer */
156149
$beginSearchAtPointer = TokenHelper::findNextExcluding(
157150
$phpcsFile,
158151
array_merge(TokenHelper::$ineffectiveTokenCodes, $nameTokenCodes),
@@ -369,74 +362,57 @@ private static function createAllReferencedNamesInAttributes(File $phpcsFile, in
369362

370363
$tokens = $phpcsFile->getTokens();
371364

372-
$attributeTokenCode = TokenHelper::getAttributeTokenCode();
373-
374-
$possibleAttributePointers = TokenHelper::findNextAll($phpcsFile, $attributeTokenCode, $openTagPointer + 1);
375-
376-
foreach ($possibleAttributePointers as $possibleAttributePointer) {
377-
// @codeCoverageIgnoreStart
378-
if (!StringHelper::startsWith($tokens[$possibleAttributePointer]['content'], '#[')) {
379-
continue;
380-
}
381-
// @codeCoverageIgnoreEnd
382-
383-
$attributeStartPointer = $possibleAttributePointer;
384-
$attributeEndPointer = self::getAttributeEndPointer($phpcsFile, $attributeStartPointer);
385-
386-
if ($tokens[$attributeStartPointer]['code'] === T_COMMENT) {
387-
// @codeCoverageIgnoreStart
388-
$attributePhpcsFile = self::getFakeAttributePhpcsFile($phpcsFile, $attributeStartPointer, $attributeEndPointer);
389-
$searchStartPointer = 0;
390-
$searchEndPointer = count($attributePhpcsFile->getTokens());
391-
// @codeCoverageIgnoreEnd
392-
} else {
393-
$attributePhpcsFile = $phpcsFile;
394-
$searchStartPointer = $attributeStartPointer + 1;
395-
$searchEndPointer = $attributeEndPointer;
396-
}
365+
$attributePointers = TokenHelper::findNextAll($phpcsFile, T_ATTRIBUTE, $openTagPointer + 1);
397366

398-
$attributeTokens = $attributePhpcsFile->getTokens();
367+
foreach ($attributePointers as $attributeStartPointer) {
368+
$searchStartPointer = $attributeStartPointer + 1;
369+
$searchEndPointer = $tokens[$attributeStartPointer]['attribute_closer'];
399370

400371
$searchPointer = $searchStartPointer;
401372
$searchTokens = array_merge(TokenHelper::getNameTokenCodes(), [T_OPEN_PARENTHESIS, T_CLOSE_PARENTHESIS]);
402373
$level = 0;
403374
do {
404-
$pointer = TokenHelper::findNext($attributePhpcsFile, $searchTokens, $searchPointer, $searchEndPointer);
375+
$pointer = TokenHelper::findNext($phpcsFile, $searchTokens, $searchPointer, $searchEndPointer);
405376

406377
if ($pointer === null) {
407378
break;
408379
}
409380

410-
if ($attributeTokens[$pointer]['code'] === T_OPEN_PARENTHESIS) {
381+
if ($tokens[$pointer]['code'] === T_OPEN_PARENTHESIS) {
411382
$level++;
412383
$searchPointer = $pointer + 1;
413384
continue;
414385
}
415386

416-
if ($attributeTokens[$pointer]['code'] === T_CLOSE_PARENTHESIS) {
387+
if ($tokens[$pointer]['code'] === T_CLOSE_PARENTHESIS) {
417388
$level--;
418389
$searchPointer = $pointer + 1;
419390
continue;
420391
}
421392

422-
$referencedNameEndPointer = self::getReferencedNameEndPointer($attributePhpcsFile, $pointer);
393+
$referencedNameEndPointer = self::getReferencedNameEndPointer($phpcsFile, $pointer);
423394

424-
$pointerBefore = TokenHelper::findPreviousEffective($attributePhpcsFile, $pointer - 1);
395+
$pointerBefore = TokenHelper::findPreviousEffective($phpcsFile, $pointer - 1);
425396

426-
if (in_array($attributeTokens[$pointerBefore]['code'], [T_OPEN_TAG, $attributeTokenCode], true)) {
397+
if (in_array($tokens[$pointerBefore]['code'], [T_OPEN_TAG, T_ATTRIBUTE], true)) {
427398
$referenceType = ReferencedName::TYPE_CLASS;
428-
} elseif ($attributeTokens[$pointerBefore]['code'] === T_COMMA && $level === 0) {
399+
} elseif ($tokens[$pointerBefore]['code'] === T_COMMA && $level === 0) {
429400
$referenceType = ReferencedName::TYPE_CLASS;
430-
} elseif (self::isReferencedName($attributePhpcsFile, $pointer)) {
431-
$referenceType = self::getReferenceType($attributePhpcsFile, $pointer, $referencedNameEndPointer);
401+
} elseif (self::isReferencedName($phpcsFile, $pointer)) {
402+
$referenceType = self::getReferenceType($phpcsFile, $pointer, $referencedNameEndPointer);
432403
} else {
433404
$searchPointer = $pointer + 1;
434405
continue;
435406
}
436407

437-
$referencedName = self::getReferenceName($attributePhpcsFile, $pointer, $referencedNameEndPointer);
408+
$referencedName = self::getReferenceName($phpcsFile, $pointer, $referencedNameEndPointer);
438409

439-
$referencedNames[] = new ReferencedName($referencedName, $attributeStartPointer, $attributeEndPointer, $referenceType);
410+
$referencedNames[] = new ReferencedName(
411+
$referencedName,
412+
$attributeStartPointer,
413+
$tokens[$attributeStartPointer]['attribute_closer'],
414+
$referenceType
415+
);
440416

441417
$searchPointer = $referencedNameEndPointer + 1;
442418

@@ -446,46 +422,4 @@ private static function createAllReferencedNamesInAttributes(File $phpcsFile, in
446422
return $referencedNames;
447423
}
448424

449-
/**
450-
* @codeCoverageIgnore
451-
* @param File $phpcsFile
452-
* @param int $commentAttributeStartPointer
453-
* @param int $commentAttributeEndPointer
454-
* @return File
455-
*/
456-
private static function getFakeAttributePhpcsFile(
457-
File $phpcsFile,
458-
int $commentAttributeStartPointer,
459-
int $commentAttributeEndPointer
460-
): File
461-
{
462-
$attributeContent = substr(TokenHelper::getContent($phpcsFile, $commentAttributeStartPointer, $commentAttributeEndPointer), 2, -2);
463-
464-
$attributePhpcsFile = clone $phpcsFile;
465-
$attributePhpcsFile->setContent('<?php ' . trim($attributeContent));
466-
$attributePhpcsFile->parse();
467-
468-
return $attributePhpcsFile;
469-
}
470-
471-
/**
472-
* @codeCoverageIgnore
473-
* @param File $phpcsFile
474-
* @param int $attributeStartPointer
475-
* @return int
476-
*/
477-
private static function getAttributeEndPointer(File $phpcsFile, int $attributeStartPointer): int
478-
{
479-
$tokens = $phpcsFile->getTokens();
480-
481-
if (
482-
$tokens[$attributeStartPointer]['code'] === T_COMMENT
483-
&& StringHelper::endsWith($tokens[$attributeStartPointer]['content'], ']' . $phpcsFile->eolChar)
484-
) {
485-
return $attributeStartPointer;
486-
}
487-
488-
return TokenHelper::findNext($phpcsFile, T_CLOSE_SQUARE_BRACKET, $attributeStartPointer + 1);
489-
}
490-
491425
}

SlevomatCodingStandard/Helpers/TokenHelper.php

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,7 @@
66
use function array_key_exists;
77
use function array_merge;
88
use function count;
9-
use const PHP_VERSION_ID;
109
use const T_ARRAY_HINT;
11-
use const T_ATTRIBUTE;
1210
use const T_BREAK;
1311
use const T_CALLABLE;
1412
use const T_CLASS;
@@ -501,9 +499,4 @@ public static function getTypeHintTokenCodes(): array
501499
return $typeHintTokenCodes;
502500
}
503501

504-
public static function getAttributeTokenCode(): int
505-
{
506-
return PHP_VERSION_ID >= 80000 ? T_ATTRIBUTE : T_COMMENT;
507-
}
508-
509502
}

SlevomatCodingStandard/Sniffs/Functions/StaticClosureSniff.php

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
use PHP_CodeSniffer\Sniffs\Sniff;
77
use SlevomatCodingStandard\Helpers\TokenHelper;
88
use SlevomatCodingStandard\Helpers\VariableHelper;
9-
use const T_CLOSE_PARENTHESIS;
109
use const T_CLOSURE;
1110
use const T_DOUBLE_QUOTED_STRING;
1211
use const T_FN;
@@ -58,11 +57,6 @@ public function process(File $phpcsFile, $closurePointer): void
5857

5958
$closureScopeOpenerPointer = $tokens[$closurePointer]['scope_opener'];
6059
$closureScopeCloserPointer = $tokens[$closurePointer]['scope_closer'];
61-
if ($tokens[$closureScopeCloserPointer]['code'] === T_CLOSE_PARENTHESIS) {
62-
while ($tokens[$closureScopeCloserPointer]['parenthesis_opener'] > $closurePointer) {
63-
$closureScopeCloserPointer = TokenHelper::findNext($phpcsFile, T_CLOSE_PARENTHESIS, $closureScopeCloserPointer + 1);
64-
}
65-
}
6660

6761
$thisPointer = TokenHelper::findNextContent(
6862
$phpcsFile,

build/PHPStan/GetTokenDynamicReturnTypeExtension.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,8 @@ private function getTokensArrayType(): ArrayType
8080
$arrayBuilder->setOffsetValueType(new ConstantStringType('bracket_closer'), $integerType);
8181
$arrayBuilder->setOffsetValueType(new ConstantStringType('comment_opener'), $integerType);
8282
$arrayBuilder->setOffsetValueType(new ConstantStringType('comment_closer'), $integerType);
83+
$arrayBuilder->setOffsetValueType(new ConstantStringType('attribute_opener'), $integerType);
84+
$arrayBuilder->setOffsetValueType(new ConstantStringType('attribute_closer'), $integerType);
8385

8486
$this->arrayType = new ArrayType($integerType, TypeCombinator::union($baseArrayBuilder->getArray(), $arrayBuilder->getArray()));
8587
}

build/PHPStan/phpstan.neon

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ parameters:
1212
excludes_analyse:
1313
- %currentWorkingDirectory%/tests/*/data/*
1414
ignoreErrors:
15-
- "#Offset '(bracket|scope|parenthesis|comment)_(opener|closer)' does not exist#"
15+
- "#Offset '(bracket|scope|parenthesis|comment|attribute)_(opener|closer)' does not exist#"
1616
- "#Offset '(conditions|scope_condition)' does not exist#"
1717
-
1818
message: '#Offset ''nested_parenthesis'' does not exist on array#'

0 commit comments

Comments
 (0)