From ce84017a2498e4817ccd010531ac6948d783f839 Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Sun, 17 Jul 2022 12:27:00 +0000 Subject: [PATCH] Updated Rector to commit f6090319c24eb98de56d09353c24b5c30da9e7fc https://github.com/rectorphp/rector-src/commit/f6090319c24eb98de56d09353c24b5c30da9e7fc [PHPStan] Reduce PHPStan errors for narrow public - take 3 (#2674) --- .../BetterPhpDocParser/PhpDocInfo/PhpDocInfo.php | 3 +++ .../VarAnnotationManipulator.php | 3 +++ .../NodeCollector/BinaryOpConditionsCollector.php | 1 + .../PhpDoc/CustomPHPStanDetector.php | 3 +++ .../ClassMethodReturnTypeOverrideGuard.php | 4 ++-- .../TypeNodeAnalyzer/GenericTypeNodeAnalyzer.php | 6 +++--- .../NodeFactory/AnonymousFunctionFactory.php | 1 + src/Application/VersionResolver.php | 4 ++-- src/Exclusion/ExclusionManager.php | 15 ++++++++++----- src/PhpParser/Node/BetterNodeFinder.php | 2 ++ src/PhpParser/Node/NodeFactory.php | 3 +++ src/Rector/AbstractRector.php | 2 +- vendor/autoload.php | 2 +- vendor/composer/autoload_real.php | 14 +++++++------- vendor/composer/autoload_static.php | 8 ++++---- 15 files changed, 46 insertions(+), 25 deletions(-) diff --git a/packages/BetterPhpDocParser/PhpDocInfo/PhpDocInfo.php b/packages/BetterPhpDocParser/PhpDocInfo/PhpDocInfo.php index 7a63cd25a1e..abcd50710c7 100644 --- a/packages/BetterPhpDocParser/PhpDocInfo/PhpDocInfo.php +++ b/packages/BetterPhpDocParser/PhpDocInfo/PhpDocInfo.php @@ -108,6 +108,9 @@ final class PhpDocInfo $this->isSingleLine = \true; } } + /** + * @api + */ public function addPhpDocTagNode(PhpDocChildNode $phpDocChildNode) : void { $this->phpDocNode->children[] = $phpDocChildNode; diff --git a/packages/BetterPhpDocParser/PhpDocManipulator/VarAnnotationManipulator.php b/packages/BetterPhpDocParser/PhpDocManipulator/VarAnnotationManipulator.php index 2b0bf17bbaf..88d2e26209f 100644 --- a/packages/BetterPhpDocParser/PhpDocManipulator/VarAnnotationManipulator.php +++ b/packages/BetterPhpDocParser/PhpDocManipulator/VarAnnotationManipulator.php @@ -48,6 +48,9 @@ final class VarAnnotationManipulator $phpDocInfo->addTagValueNode($varTagValueNode); $phpDocInfo->makeSingleLined(); } + /** + * @api + */ public function decorateNodeWithType(Node $node, Type $staticType) : void { if ($staticType instanceof MixedType) { diff --git a/packages/NodeCollector/BinaryOpConditionsCollector.php b/packages/NodeCollector/BinaryOpConditionsCollector.php index 36d85e0b734..b87d1010c8c 100644 --- a/packages/NodeCollector/BinaryOpConditionsCollector.php +++ b/packages/NodeCollector/BinaryOpConditionsCollector.php @@ -19,6 +19,7 @@ final class BinaryOpConditionsCollector * Similarly, for right-associative operations (e.g. `a ?? b ?? c`), the result produced by * the implicit parenthesization (`[a, b ?? c]`) might not match the expectations. * + * @api * @param class-string $binaryOpClass * @return array */ diff --git a/packages/StaticTypeMapper/PhpDoc/CustomPHPStanDetector.php b/packages/StaticTypeMapper/PhpDoc/CustomPHPStanDetector.php index 4d8f920d681..0adb31390c9 100644 --- a/packages/StaticTypeMapper/PhpDoc/CustomPHPStanDetector.php +++ b/packages/StaticTypeMapper/PhpDoc/CustomPHPStanDetector.php @@ -22,6 +22,9 @@ final class CustomPHPStanDetector { $this->phpDocInfoFactory = $phpDocInfoFactory; } + /** + * @api + */ public function isCustomType(Type $definedType, Node $node) : bool { if (!$definedType instanceof NonExistingObjectType) { diff --git a/packages/VendorLocker/NodeVendorLocker/ClassMethodReturnTypeOverrideGuard.php b/packages/VendorLocker/NodeVendorLocker/ClassMethodReturnTypeOverrideGuard.php index b2529d87021..e715728ca10 100644 --- a/packages/VendorLocker/NodeVendorLocker/ClassMethodReturnTypeOverrideGuard.php +++ b/packages/VendorLocker/NodeVendorLocker/ClassMethodReturnTypeOverrideGuard.php @@ -97,9 +97,9 @@ final class ClassMethodReturnTypeOverrideGuard } return $this->hasClassMethodExprReturn($classMethod); } - public function shouldSkipClassMethodOldTypeWithNewType(Type $oldType, Type $newType, Node $node) : bool + public function shouldSkipClassMethodOldTypeWithNewType(Type $oldType, Type $newType, ClassMethod $classMethod) : bool { - if ($this->customPHPStanDetector->isCustomType($oldType, $node)) { + if ($this->customPHPStanDetector->isCustomType($oldType, $classMethod)) { return \true; } if ($oldType instanceof MixedType) { diff --git a/rules/DeadCode/TypeNodeAnalyzer/GenericTypeNodeAnalyzer.php b/rules/DeadCode/TypeNodeAnalyzer/GenericTypeNodeAnalyzer.php index 71aa5f1a04e..818f623c718 100644 --- a/rules/DeadCode/TypeNodeAnalyzer/GenericTypeNodeAnalyzer.php +++ b/rules/DeadCode/TypeNodeAnalyzer/GenericTypeNodeAnalyzer.php @@ -4,12 +4,12 @@ declare (strict_types=1); namespace Rector\DeadCode\TypeNodeAnalyzer; use PHPStan\PhpDocParser\Ast\Type\GenericTypeNode; -use PHPStan\PhpDocParser\Ast\Type\UnionTypeNode; +use Rector\BetterPhpDocParser\ValueObject\Type\BracketsAwareUnionTypeNode; final class GenericTypeNodeAnalyzer { - public function hasGenericType(UnionTypeNode $unionTypeNode) : bool + public function hasGenericType(BracketsAwareUnionTypeNode $bracketsAwareUnionTypeNode) : bool { - $types = $unionTypeNode->types; + $types = $bracketsAwareUnionTypeNode->types; foreach ($types as $type) { if ($type instanceof GenericTypeNode) { return \true; diff --git a/rules/Php72/NodeFactory/AnonymousFunctionFactory.php b/rules/Php72/NodeFactory/AnonymousFunctionFactory.php index 46105db224f..8157f54c87b 100644 --- a/rules/Php72/NodeFactory/AnonymousFunctionFactory.php +++ b/rules/Php72/NodeFactory/AnonymousFunctionFactory.php @@ -120,6 +120,7 @@ final class AnonymousFunctionFactory $this->inlineCodeParser = $inlineCodeParser; } /** + * @api * @param Param[] $params * @param Stmt[] $stmts * @param \PhpParser\Node\Identifier|\PhpParser\Node\Name|\PhpParser\Node\NullableType|\PhpParser\Node\UnionType|\PhpParser\Node\ComplexType|null $returnTypeNode diff --git a/src/Application/VersionResolver.php b/src/Application/VersionResolver.php index ea415cb7988..b7d4387b9e0 100644 --- a/src/Application/VersionResolver.php +++ b/src/Application/VersionResolver.php @@ -17,12 +17,12 @@ final class VersionResolver * @api * @var string */ - public const PACKAGE_VERSION = 'ce32685688660a000848322caadcf336bfc282f8'; + public const PACKAGE_VERSION = 'f6090319c24eb98de56d09353c24b5c30da9e7fc'; /** * @api * @var string */ - public const RELEASE_DATE = '2022-07-17 03:11:17'; + public const RELEASE_DATE = '2022-07-17 14:22:06'; /** * @var int */ diff --git a/src/Exclusion/ExclusionManager.php b/src/Exclusion/ExclusionManager.php index 69ecff28966..dae2eade42d 100644 --- a/src/Exclusion/ExclusionManager.php +++ b/src/Exclusion/ExclusionManager.php @@ -34,7 +34,10 @@ final class ExclusionManager { $this->phpDocInfoFactory = $phpDocInfoFactory; } - public function isNodeSkippedByRector(Node $node, PhpRectorInterface $phpRector) : bool + /** + * @param class-string $rectorClass + */ + public function isNodeSkippedByRector(Node $node, string $rectorClass) : bool { if ($node instanceof PropertyProperty || $node instanceof Const_) { $node = $node->getAttribute(AttributeKey::PARENT_NODE); @@ -42,7 +45,7 @@ final class ExclusionManager return \false; } } - if ($this->hasNoRectorPhpDocTagMatch($node, $phpRector)) { + if ($this->hasNoRectorPhpDocTagMatch($node, $rectorClass)) { return \true; } if ($node instanceof Stmt) { @@ -53,14 +56,16 @@ final class ExclusionManager if ($parentNode === null) { return \false; } - return $this->isNodeSkippedByRector($parentNode, $phpRector); + return $this->isNodeSkippedByRector($parentNode, $rectorClass); } - private function hasNoRectorPhpDocTagMatch(Node $node, PhpRectorInterface $phpRector) : bool + /** + * @param class-string $rectorClass + */ + private function hasNoRectorPhpDocTagMatch(Node $node, string $rectorClass) : bool { $phpDocInfo = $this->phpDocInfoFactory->createFromNodeOrEmpty($node); /** @var PhpDocTagNode[] $noRectorTags */ $noRectorTags = \array_merge($phpDocInfo->getTagsByName('noRector'), $phpDocInfo->getTagsByName('norector')); - $rectorClass = \get_class($phpRector); if ($this->matchesNoRectorTag($noRectorTags, $rectorClass)) { return \true; } diff --git a/src/PhpParser/Node/BetterNodeFinder.php b/src/PhpParser/Node/BetterNodeFinder.php index 2e095affb6f..00f756f533d 100644 --- a/src/PhpParser/Node/BetterNodeFinder.php +++ b/src/PhpParser/Node/BetterNodeFinder.php @@ -157,6 +157,7 @@ final class BetterNodeFinder return $this->findVariableOfName($nodes, $name) instanceof Node; } /** + * @api * @param \PhpParser\Node|mixed[] $nodes * @return Variable|null */ @@ -302,6 +303,7 @@ final class BetterNodeFinder return null; } /** + * @api * @template T of Node * @param array> $types */ diff --git a/src/PhpParser/Node/NodeFactory.php b/src/PhpParser/Node/NodeFactory.php index 1fe8a0c91e6..69e236a0f30 100644 --- a/src/PhpParser/Node/NodeFactory.php +++ b/src/PhpParser/Node/NodeFactory.php @@ -444,6 +444,9 @@ final class NodeFactory } return $this->createBooleanAndFromNodes($newNodes); } + /** + * @api + */ public function createClassConstant(string $name, Expr $expr, int $modifier) : ClassConst { $expr = BuilderHelpers::normalizeValue($expr); diff --git a/src/Rector/AbstractRector.php b/src/Rector/AbstractRector.php index cccf99f176c..a7c4722a492 100644 --- a/src/Rector/AbstractRector.php +++ b/src/Rector/AbstractRector.php @@ -329,7 +329,7 @@ CODE_SAMPLE; if ($this->nodesToRemoveCollector->isNodeRemoved($node)) { return \true; } - if ($this->exclusionManager->isNodeSkippedByRector($node, $this)) { + if ($this->exclusionManager->isNodeSkippedByRector($node, static::class)) { return \true; } $smartFileInfo = $this->file->getSmartFileInfo(); diff --git a/vendor/autoload.php b/vendor/autoload.php index 517c72b5df0..640d77cab70 100644 --- a/vendor/autoload.php +++ b/vendor/autoload.php @@ -9,4 +9,4 @@ if (PHP_VERSION_ID < 50600) { require_once __DIR__ . '/composer/autoload_real.php'; -return ComposerAutoloaderInit227a1866e9ea4ee32c5211f8e530ed01::getLoader(); +return ComposerAutoloaderInit89237dd5b5cd25462a2d0b4006201be0::getLoader(); diff --git a/vendor/composer/autoload_real.php b/vendor/composer/autoload_real.php index 9277b537777..9723767c122 100644 --- a/vendor/composer/autoload_real.php +++ b/vendor/composer/autoload_real.php @@ -2,7 +2,7 @@ // autoload_real.php @generated by Composer -class ComposerAutoloaderInit227a1866e9ea4ee32c5211f8e530ed01 +class ComposerAutoloaderInit89237dd5b5cd25462a2d0b4006201be0 { private static $loader; @@ -22,19 +22,19 @@ class ComposerAutoloaderInit227a1866e9ea4ee32c5211f8e530ed01 return self::$loader; } - spl_autoload_register(array('ComposerAutoloaderInit227a1866e9ea4ee32c5211f8e530ed01', 'loadClassLoader'), true, true); + spl_autoload_register(array('ComposerAutoloaderInit89237dd5b5cd25462a2d0b4006201be0', 'loadClassLoader'), true, true); self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__)); - spl_autoload_unregister(array('ComposerAutoloaderInit227a1866e9ea4ee32c5211f8e530ed01', 'loadClassLoader')); + spl_autoload_unregister(array('ComposerAutoloaderInit89237dd5b5cd25462a2d0b4006201be0', 'loadClassLoader')); require __DIR__ . '/autoload_static.php'; - call_user_func(\Composer\Autoload\ComposerStaticInit227a1866e9ea4ee32c5211f8e530ed01::getInitializer($loader)); + call_user_func(\Composer\Autoload\ComposerStaticInit89237dd5b5cd25462a2d0b4006201be0::getInitializer($loader)); $loader->setClassMapAuthoritative(true); $loader->register(true); - $includeFiles = \Composer\Autoload\ComposerStaticInit227a1866e9ea4ee32c5211f8e530ed01::$files; + $includeFiles = \Composer\Autoload\ComposerStaticInit89237dd5b5cd25462a2d0b4006201be0::$files; foreach ($includeFiles as $fileIdentifier => $file) { - composerRequire227a1866e9ea4ee32c5211f8e530ed01($fileIdentifier, $file); + composerRequire89237dd5b5cd25462a2d0b4006201be0($fileIdentifier, $file); } return $loader; @@ -46,7 +46,7 @@ class ComposerAutoloaderInit227a1866e9ea4ee32c5211f8e530ed01 * @param string $file * @return void */ -function composerRequire227a1866e9ea4ee32c5211f8e530ed01($fileIdentifier, $file) +function composerRequire89237dd5b5cd25462a2d0b4006201be0($fileIdentifier, $file) { if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) { $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true; diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php index 76793155b84..3f1976655d3 100644 --- a/vendor/composer/autoload_static.php +++ b/vendor/composer/autoload_static.php @@ -4,7 +4,7 @@ namespace Composer\Autoload; -class ComposerStaticInit227a1866e9ea4ee32c5211f8e530ed01 +class ComposerStaticInit89237dd5b5cd25462a2d0b4006201be0 { public static $files = array ( '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php', @@ -3416,9 +3416,9 @@ class ComposerStaticInit227a1866e9ea4ee32c5211f8e530ed01 public static function getInitializer(ClassLoader $loader) { return \Closure::bind(function () use ($loader) { - $loader->prefixLengthsPsr4 = ComposerStaticInit227a1866e9ea4ee32c5211f8e530ed01::$prefixLengthsPsr4; - $loader->prefixDirsPsr4 = ComposerStaticInit227a1866e9ea4ee32c5211f8e530ed01::$prefixDirsPsr4; - $loader->classMap = ComposerStaticInit227a1866e9ea4ee32c5211f8e530ed01::$classMap; + $loader->prefixLengthsPsr4 = ComposerStaticInit89237dd5b5cd25462a2d0b4006201be0::$prefixLengthsPsr4; + $loader->prefixDirsPsr4 = ComposerStaticInit89237dd5b5cd25462a2d0b4006201be0::$prefixDirsPsr4; + $loader->classMap = ComposerStaticInit89237dd5b5cd25462a2d0b4006201be0::$classMap; }, null, ClassLoader::class); }