diff --git a/rules-tests/Php81/Rector/Property/ReadOnlyPropertyRector/Fixture/skip_non_private_property.php.inc b/rules-tests/Php81/Rector/Property/ReadOnlyPropertyRector/Fixture/skip_non_private_property.php.inc new file mode 100644 index 00000000000..90af9531f8c --- /dev/null +++ b/rules-tests/Php81/Rector/Property/ReadOnlyPropertyRector/Fixture/skip_non_private_property.php.inc @@ -0,0 +1,18 @@ +name = $name; + } + + public function getName() + { + return $this->name; + } +} diff --git a/rules-tests/Php81/Rector/Property/ReadOnlyPropertyRector/Fixture/skip_non_private_property2.php.inc b/rules-tests/Php81/Rector/Property/ReadOnlyPropertyRector/Fixture/skip_non_private_property2.php.inc new file mode 100644 index 00000000000..21d3dbeb3c4 --- /dev/null +++ b/rules-tests/Php81/Rector/Property/ReadOnlyPropertyRector/Fixture/skip_non_private_property2.php.inc @@ -0,0 +1,16 @@ +name; + } +} diff --git a/rules-tests/Privatization/NodeManipulator/VisibilityManipulatorTest.php b/rules-tests/Privatization/NodeManipulator/VisibilityManipulatorTest.php index 0731a294a93..85e6de50c1e 100644 --- a/rules-tests/Privatization/NodeManipulator/VisibilityManipulatorTest.php +++ b/rules-tests/Privatization/NodeManipulator/VisibilityManipulatorTest.php @@ -21,9 +21,9 @@ protected function setUp(): void public function test(): void { - $node = new ClassMethod('SomeClass'); - $node->flags = Visibility::PUBLIC | Visibility::STATIC; - $this->visibilityManipulator->changeNodeVisibility($node, Visibility::PROTECTED); - $this->assertSame(Visibility::PROTECTED | Visibility::STATIC, $node->flags); + $classMethod = new ClassMethod('SomeClass'); + $classMethod->flags = Visibility::PUBLIC | Visibility::STATIC; + $this->visibilityManipulator->changeNodeVisibility($classMethod, Visibility::PROTECTED); + $this->assertSame(Visibility::PROTECTED | Visibility::STATIC, $classMethod->flags); } } diff --git a/rules/Php81/Rector/Property/ReadOnlyPropertyRector.php b/rules/Php81/Rector/Property/ReadOnlyPropertyRector.php index f69cbc5b5d9..1adaef3a390 100644 --- a/rules/Php81/Rector/Property/ReadOnlyPropertyRector.php +++ b/rules/Php81/Rector/Property/ReadOnlyPropertyRector.php @@ -11,6 +11,7 @@ use Rector\Core\NodeManipulator\PropertyManipulator; use Rector\Core\Rector\AbstractRector; use Rector\Core\ValueObject\PhpVersionFeature; +use Rector\Core\ValueObject\Visibility; use Rector\Privatization\NodeManipulator\VisibilityManipulator; use Rector\VersionBonding\Contract\MinPhpVersionInterface; use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample; @@ -101,6 +102,10 @@ public function refactor(Node $node): ?Node return null; } + if ($node->flags !== Visibility::PRIVATE) { + return null; + } + $this->visibilityManipulator->makeReadonly($node); return $node; } @@ -112,7 +117,7 @@ public function provideMinPhpVersion(): int private function refactorParam(Param $param): Param | null { - if ($param->flags === 0) { + if ($param->flags !== Visibility::PRIVATE) { return null; } diff --git a/rules/Privatization/NodeManipulator/VisibilityManipulator.php b/rules/Privatization/NodeManipulator/VisibilityManipulator.php index a996f1c1848..b62f4a5c778 100644 --- a/rules/Privatization/NodeManipulator/VisibilityManipulator.php +++ b/rules/Privatization/NodeManipulator/VisibilityManipulator.php @@ -12,6 +12,9 @@ use Rector\Core\ValueObject\Visibility; use Webmozart\Assert\Assert; +/** + * @see \Rector\Tests\Privatization\NodeManipulator\VisibilityManipulatorTest + */ final class VisibilityManipulator { public function hasVisibility(ClassMethod | Property | ClassConst | Param $node, int $visibility): bool