Skip to content

Commit 6fa0be6

Browse files
committed
Cover class-level purity tags on overrides of @pure-unless-parameter-passed methods
1 parent 2e9c763 commit 6fa0be6

2 files changed

Lines changed: 33 additions & 0 deletions

File tree

‎tests/PHPStan/Rules/Methods/MethodSignatureRuleTest.php‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -669,6 +669,10 @@ public function testPureUnlessParameterPassedOverride(): void
669669
'Impure method MethodSignaturePureUnlessParameterPassed\ImpureChild::replace() overrides method MethodSignaturePureUnlessParameterPassed\PureUnlessParent::replace() marked @pure-unless-parameter-passed.',
670670
22,
671671
],
672+
[
673+
'Impure method MethodSignaturePureUnlessParameterPassed\AllMethodsImpureChild::replace() overrides method MethodSignaturePureUnlessParameterPassed\PureUnlessParent::replace() marked @pure-unless-parameter-passed.',
674+
76,
675+
],
672676
]);
673677
}
674678

‎tests/PHPStan/Rules/Methods/data/method-signature-pure-unless-parameter-passed.php‎

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,3 +53,32 @@ public function replace(string $subject, int &$count = 0): string
5353
}
5454

5555
}
56+
57+
/**
58+
* @phpstan-all-methods-pure
59+
*/
60+
class AllMethodsPureChild implements PureUnlessParent
61+
{
62+
63+
public function replace(string $subject, int &$count = 0): string
64+
{
65+
return $subject;
66+
}
67+
68+
}
69+
70+
/**
71+
* @phpstan-all-methods-impure
72+
*/
73+
class AllMethodsImpureChild implements PureUnlessParent
74+
{
75+
76+
public function replace(string $subject, int &$count = 0): string
77+
{
78+
echo 'side effect';
79+
$count = 1;
80+
81+
return $subject;
82+
}
83+
84+
}

0 commit comments

Comments
 (0)