Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 468e02c

Browse files
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)

AltStyle によって変換されたページ (->オリジナル) /