Skip to content

Commit 468e02c

Browse files
committed
Remove UsageOfDeprecatedCastRule in favour of it already being implemented in PHPStan via RestrictedMethodUsageExtension
1 parent ea25caa commit 468e02c

File tree

6 files changed

+40
-71
lines changed

6 files changed

+40
-71
lines changed

composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
],
88
"require": {
99
"php": "^7.4 || ^8.0",
10-
"phpstan/phpstan": "^2.1.13"
10+
"phpstan/phpstan": "^2.1.15"
1111
},
1212
"require-dev": {
1313
"php-parallel-lint/php-parallel-lint": "^1.2",

phpstan-baseline.neon

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,12 @@ parameters:
5454
count: 1
5555
path: tests/Rules/Deprecations/TypeHintDeprecatedInFunctionSignatureRuleTest.php
5656

57+
-
58+
message: '#^Accessing PHPStan\\Rules\\RestrictedUsage\\RestrictedUsageOfDeprecatedStringCastRule\:\:class is not covered by backward compatibility promise\. The class might change in a minor PHPStan version\.$#'
59+
identifier: phpstanApi.classConstant
60+
count: 1
61+
path: tests/Rules/Deprecations/UsageOfDeprecatedCastRuleTest.php
62+
5763
-
5864
message: '#^Accessing PHPStan\\Rules\\Classes\\ExistingClassInTraitUseRule\:\:class is not covered by backward compatibility promise\. The class might change in a minor PHPStan version\.$#'
5965
identifier: phpstanApi.classConstant

rules.neon

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,6 @@ services:
4545

4646
rules:
4747
- PHPStan\Rules\Deprecations\FetchingDeprecatedConstRule
48-
- PHPStan\Rules\Deprecations\UsageOfDeprecatedCastRule
4948

5049
conditionalTags:
5150
PHPStan\Rules\Deprecations\CallWithDeprecatedIniOptionRule:

src/Rules/Deprecations/RestrictedDeprecatedMethodUsageExtension.php

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,27 @@ public function isRestrictedMethodUsage(
6868
}
6969

7070
$description = $methodReflection->getDeprecatedDescription();
71+
if (strtolower($methodReflection->getName()) === '__tostring') {
72+
if ($description === null) {
73+
return RestrictedUsage::create(
74+
sprintf(
75+
'Casting class %s to string is deprecated.',
76+
$methodReflection->getDeclaringClass()->getName(),
77+
),
78+
'class.toStringDeprecated',
79+
);
80+
}
81+
82+
return RestrictedUsage::create(
83+
sprintf(
84+
"Casting class %s to string is deprecated.:\n%s",
85+
$methodReflection->getDeclaringClass()->getName(),
86+
$description,
87+
),
88+
'class.toStringDeprecated',
89+
);
90+
}
91+
7192
if ($description === null) {
7293
return RestrictedUsage::create(
7394
sprintf(

src/Rules/Deprecations/UsageOfDeprecatedCastRule.php

Lines changed: 0 additions & 64 deletions
This file was deleted.

tests/Rules/Deprecations/UsageOfDeprecatedCastRuleTest.php

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,23 +2,22 @@
22

33
namespace PHPStan\Rules\Deprecations;
44

5+
use PHPStan\Rules\RestrictedUsage\RestrictedUsageOfDeprecatedStringCastRule;
56
use PHPStan\Rules\Rule;
67
use PHPStan\Testing\RuleTestCase;
78

89
/**
9-
* @extends RuleTestCase<UsageOfDeprecatedCastRule>
10+
* @extends RuleTestCase<RestrictedUsageOfDeprecatedStringCastRule>
1011
*/
1112
class UsageOfDeprecatedCastRuleTest extends RuleTestCase
1213
{
1314

1415
protected function getRule(): Rule
1516
{
16-
return new UsageOfDeprecatedCastRule(
17-
new DeprecatedScopeHelper([new DefaultDeprecatedScopeResolver()]),
18-
);
17+
return self::getContainer()->getByType(RestrictedUsageOfDeprecatedStringCastRule::class);
1918
}
2019

21-
public function testUsageOfDeprecatedTrait(): void
20+
public function testUsageOfDeprecatedCast(): void
2221
{
2322
require_once __DIR__ . '/data/usage-of-deprecated-cast.php';
2423
$this->analyse(
@@ -32,4 +31,12 @@ public function testUsageOfDeprecatedTrait(): void
3231
);
3332
}
3433

34+
public static function getAdditionalConfigFiles(): array
35+
{
36+
return [
37+
__DIR__ . '/../../../rules.neon',
38+
...parent::getAdditionalConfigFiles(),
39+
];
40+
}
41+
3542
}

0 commit comments

Comments
 (0)