From 8ad4f66b112d291b05367110221251f1ab9b6088 Mon Sep 17 00:00:00 2001 From: Abdul Malik Ikhsan Date: Thu, 29 Jan 2026 07:59:12 +0700 Subject: [PATCH 1/2] [Php80] Handle crash on empty name attribute field value on AnnotationToAttributeRector --- .../Fixture/use_empty_attribute.php.inc | 27 +++++++++++++++++++ .../Source/Attribute/EmptyAttribute.php | 12 +++++++++ .../config/configured_rule.php | 3 +++ 3 files changed, 42 insertions(+) create mode 100644 rules-tests/Php80/Rector/Class_/AnnotationToAttributeRector/Fixture/use_empty_attribute.php.inc create mode 100644 rules-tests/Php80/Rector/Class_/AnnotationToAttributeRector/Source/Attribute/EmptyAttribute.php diff --git a/rules-tests/Php80/Rector/Class_/AnnotationToAttributeRector/Fixture/use_empty_attribute.php.inc b/rules-tests/Php80/Rector/Class_/AnnotationToAttributeRector/Fixture/use_empty_attribute.php.inc new file mode 100644 index 00000000000..140659d8029 --- /dev/null +++ b/rules-tests/Php80/Rector/Class_/AnnotationToAttributeRector/Fixture/use_empty_attribute.php.inc @@ -0,0 +1,27 @@ + +----- + diff --git a/rules-tests/Php80/Rector/Class_/AnnotationToAttributeRector/Source/Attribute/EmptyAttribute.php b/rules-tests/Php80/Rector/Class_/AnnotationToAttributeRector/Source/Attribute/EmptyAttribute.php new file mode 100644 index 00000000000..b62a0a8fa47 --- /dev/null +++ b/rules-tests/Php80/Rector/Class_/AnnotationToAttributeRector/Source/Attribute/EmptyAttribute.php @@ -0,0 +1,12 @@ + Date: Thu, 29 Jan 2026 08:07:09 +0700 Subject: [PATCH 2/2] fix --- .../Fixture/use_empty_attribute.php.inc | 2 +- src/PhpAttribute/NodeFactory/PhpAttributeGroupFactory.php | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/rules-tests/Php80/Rector/Class_/AnnotationToAttributeRector/Fixture/use_empty_attribute.php.inc b/rules-tests/Php80/Rector/Class_/AnnotationToAttributeRector/Fixture/use_empty_attribute.php.inc index 140659d8029..960bf9e0543 100644 --- a/rules-tests/Php80/Rector/Class_/AnnotationToAttributeRector/Fixture/use_empty_attribute.php.inc +++ b/rules-tests/Php80/Rector/Class_/AnnotationToAttributeRector/Fixture/use_empty_attribute.php.inc @@ -19,7 +19,7 @@ namespace Rector\Tests\Php80\Rector\Class_\AnnotationToAttributeRector\Fixture; use Rector\Tests\Php80\Rector\Class_\AnnotationToAttributeRector\Source\Attribute\EmptyAttribute; -#[\Rector\Tests\Php80\Rector\Class_\AnnotationToAttributeRector\Source\Attribute\EmptyAttribute(foo: '')] +#[EmptyAttribute(foo: '')] class UseEmptyAttribute { } diff --git a/src/PhpAttribute/NodeFactory/PhpAttributeGroupFactory.php b/src/PhpAttribute/NodeFactory/PhpAttributeGroupFactory.php index 847b748b01b..88e9a6c0367 100644 --- a/src/PhpAttribute/NodeFactory/PhpAttributeGroupFactory.php +++ b/src/PhpAttribute/NodeFactory/PhpAttributeGroupFactory.php @@ -154,6 +154,10 @@ private function mapClassReferences(Expr|string $expr, array $classReferencedFie continue; } + if ($arrayItem->value->value === '') { + continue; + } + $arrayItem->value = new ClassConstFetch(new FullyQualified($arrayItem->value->value), 'class'); } }