diff --git a/composer.json b/composer.json index 43ed2bc1..9cf4e652 100644 --- a/composer.json +++ b/composer.json @@ -12,6 +12,7 @@ "require-dev": { "nikic/php-parser": "^4.13.0", "php-parallel-lint/php-parallel-lint": "^1.2", + "phpstan/phpstan-deprecation-rules": "^1.1", "phpstan/phpstan-phpunit": "^1.0", "phpunit/phpunit": "^9.5" }, diff --git a/phpstan.neon b/phpstan.neon index 5df5c578..f3caa84a 100644 --- a/phpstan.neon +++ b/phpstan.neon @@ -1,4 +1,5 @@ includes: + - vendor/phpstan/phpstan-deprecation-rules/rules.neon - vendor/phpstan/phpstan-phpunit/extension.neon - vendor/phpstan/phpstan-phpunit/rules.neon - rules.neon diff --git a/src/Rules/Cast/UselessCastRule.php b/src/Rules/Cast/UselessCastRule.php index 70f762f6..c156a09a 100644 --- a/src/Rules/Cast/UselessCastRule.php +++ b/src/Rules/Cast/UselessCastRule.php @@ -10,7 +10,6 @@ use PHPStan\Rules\RuleErrorBuilder; use PHPStan\Type\ErrorType; use PHPStan\Type\GeneralizePrecision; -use PHPStan\Type\TypeUtils; use PHPStan\Type\VerbosityLevel; use function sprintf; @@ -40,7 +39,7 @@ public function processNode(Node $node, Scope $scope): array if ($castType instanceof ErrorType) { return []; } - $castType = TypeUtils::generalizeType($castType, GeneralizePrecision::lessSpecific()); + $castType = $castType->generalize(GeneralizePrecision::lessSpecific()); if ($this->treatPhpDocTypesAsCertain) { $expressionType = $scope->getType($node->expr); diff --git a/src/Rules/StrictCalls/StrictFunctionCallsRule.php b/src/Rules/StrictCalls/StrictFunctionCallsRule.php index 9a50e548..b27c25fe 100644 --- a/src/Rules/StrictCalls/StrictFunctionCallsRule.php +++ b/src/Rules/StrictCalls/StrictFunctionCallsRule.php @@ -6,7 +6,7 @@ use PhpParser\Node\Expr\FuncCall; use PhpParser\Node\Name; use PHPStan\Analyser\Scope; -use PHPStan\Broker\Broker; +use PHPStan\Reflection\ReflectionProvider; use PHPStan\Rules\Rule; use PHPStan\Type\Constant\ConstantBooleanType; use function array_key_exists; @@ -24,12 +24,12 @@ class StrictFunctionCallsRule implements Rule 'array_keys' => 2, ]; - /** @var Broker */ - private $broker; + /** @var ReflectionProvider */ + private $reflectionProvider; - public function __construct(Broker $broker) + public function __construct(ReflectionProvider $reflectionProvider) { - $this->broker = $broker; + $this->reflectionProvider = $reflectionProvider; } public function getNodeType(): string @@ -47,7 +47,7 @@ public function processNode(Node $node, Scope $scope): array return []; } - $functionName = $this->broker->resolveFunctionName($node->name, $scope); + $functionName = $this->reflectionProvider->resolveFunctionName($node->name, $scope); if ($functionName === null) { return []; } diff --git a/src/Rules/VariableVariables/VariablePropertyFetchRule.php b/src/Rules/VariableVariables/VariablePropertyFetchRule.php index 3195c16f..1b7fe52d 100644 --- a/src/Rules/VariableVariables/VariablePropertyFetchRule.php +++ b/src/Rules/VariableVariables/VariablePropertyFetchRule.php @@ -5,18 +5,17 @@ use PhpParser\Node; use PhpParser\Node\Expr\PropertyFetch; use PHPStan\Analyser\Scope; -use PHPStan\Broker\Broker; use PHPStan\Reflection\ClassReflection; +use PHPStan\Reflection\ReflectionProvider; use PHPStan\Rules\Rule; -use PHPStan\Type\TypeUtils; use PHPStan\Type\VerbosityLevel; use function sprintf; class VariablePropertyFetchRule implements Rule { - /** @var Broker */ - private $broker; + /** @var ReflectionProvider */ + private $reflectionProvider; /** @var string[] */ private $universalObjectCratesClasses; @@ -24,9 +23,9 @@ class VariablePropertyFetchRule implements Rule /** * @param string[] $universalObjectCratesClasses */ - public function __construct(Broker $broker, array $universalObjectCratesClasses) + public function __construct(ReflectionProvider $reflectionProvider, array $universalObjectCratesClasses) { - $this->broker = $broker; + $this->reflectionProvider = $reflectionProvider; $this->universalObjectCratesClasses = $universalObjectCratesClasses; } @@ -46,12 +45,12 @@ public function processNode(Node $node, Scope $scope): array } $fetchedOnType = $scope->getType($node->var); - foreach (TypeUtils::getDirectClassNames($fetchedOnType) as $referencedClass) { - if (!$this->broker->hasClass($referencedClass)) { + foreach ($fetchedOnType->getObjectClassNames() as $referencedClass) { + if (!$this->reflectionProvider->hasClass($referencedClass)) { continue; } - if ($this->isUniversalObjectCrate($this->broker->getClass($referencedClass))) { + if ($this->isUniversalObjectCrate($this->reflectionProvider->getClass($referencedClass))) { return []; } } @@ -69,7 +68,7 @@ private function isUniversalObjectCrate( ): bool { foreach ($this->universalObjectCratesClasses as $className) { - if (!$this->broker->hasClass($className)) { + if (!$this->reflectionProvider->hasClass($className)) { continue; } diff --git a/tests/Rules/StrictCalls/StrictFunctionCallsRuleTest.php b/tests/Rules/StrictCalls/StrictFunctionCallsRuleTest.php index b1d34ba8..8a1ce29c 100644 --- a/tests/Rules/StrictCalls/StrictFunctionCallsRuleTest.php +++ b/tests/Rules/StrictCalls/StrictFunctionCallsRuleTest.php @@ -10,7 +10,7 @@ class StrictFunctionCallsRuleTest extends RuleTestCase protected function getRule(): Rule { - return new StrictFunctionCallsRule($this->createBroker()); + return new StrictFunctionCallsRule($this->createReflectionProvider()); } public function testRule(): void diff --git a/tests/Rules/VariableVariables/VariablePropertyFetchRuleTest.php b/tests/Rules/VariableVariables/VariablePropertyFetchRuleTest.php index ed451ddd..2cf7e17d 100644 --- a/tests/Rules/VariableVariables/VariablePropertyFetchRuleTest.php +++ b/tests/Rules/VariableVariables/VariablePropertyFetchRuleTest.php @@ -10,7 +10,7 @@ class VariablePropertyFetchRuleTest extends RuleTestCase protected function getRule(): Rule { - return new VariablePropertyFetchRule($this->createBroker(), [ + return new VariablePropertyFetchRule($this->createReflectionProvider(), [ 'stdClass', 'SimpleXMLElement', ]);