From 005d1eaa489796b3507a95eccf3e20dfb872205b Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Thu, 15 Oct 2026 16:46:13 +0200 Subject: [PATCH] [Php83] Skip ReadOnlyAnonymousClassRector on anonymous class with attributes --- .../skip_anonymous_class_with_attribute.php.inc | 15 +++++++++++++++ .../Class_/ReadOnlyAnonymousClassRector.php | 5 +++++ 2 files changed, 20 insertions(+) create mode 100644 rules-tests/Php83/Rector/Class_/ReadOnlyAnonymousClassRector/Fixture/skip_anonymous_class_with_attribute.php.inc diff --git a/rules-tests/Php83/Rector/Class_/ReadOnlyAnonymousClassRector/Fixture/skip_anonymous_class_with_attribute.php.inc b/rules-tests/Php83/Rector/Class_/ReadOnlyAnonymousClassRector/Fixture/skip_anonymous_class_with_attribute.php.inc new file mode 100644 index 00000000000..a64c6cc563d --- /dev/null +++ b/rules-tests/Php83/Rector/Class_/ReadOnlyAnonymousClassRector/Fixture/skip_anonymous_class_with_attribute.php.inc @@ -0,0 +1,15 @@ +attempts; + } +}; diff --git a/rules/Php83/Rector/Class_/ReadOnlyAnonymousClassRector.php b/rules/Php83/Rector/Class_/ReadOnlyAnonymousClassRector.php index e1206e3df49..c12646158be 100644 --- a/rules/Php83/Rector/Class_/ReadOnlyAnonymousClassRector.php +++ b/rules/Php83/Rector/Class_/ReadOnlyAnonymousClassRector.php @@ -68,6 +68,11 @@ public function refactor(Node $node): ?Node return null; } + // attribute between "new" and "class" cannot be format-preserving printed with an added readonly modifier + if ($node->attrGroups !== []) { + return null; + } + return $this->readonlyClassManipulator->process($node); }