From e582df4f7eecfe9b3f7ac15157c6ef57fc466c67 Mon Sep 17 00:00:00 2001 From: Abdul Malik Ikhsan Date: Sat, 7 Mar 2026 22:24:05 +0700 Subject: [PATCH 1/2] [Symfony73] Handle with set allowExtraFields named argument on ConstraintOptionsToNamedArgumentsRector --- ...onstraintOptionsToNamedArgumentsRector.php | 23 +++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/rules/Symfony73/Rector/Class_/ConstraintOptionsToNamedArgumentsRector.php b/rules/Symfony73/Rector/Class_/ConstraintOptionsToNamedArgumentsRector.php index 8e58dc5b..9becf04e 100644 --- a/rules/Symfony73/Rector/Class_/ConstraintOptionsToNamedArgumentsRector.php +++ b/rules/Symfony73/Rector/Class_/ConstraintOptionsToNamedArgumentsRector.php @@ -96,15 +96,30 @@ public function refactor(Node $node): ?Node } $args = $node->getArgs(); - if ($className === SymfonyClass::SYMFONY_VALIDATOR_CONSTRAINTS_COLLECTION - && count($args) === 1 - && $args[0]->value instanceof Array_) { - + if ($className === SymfonyClass::SYMFONY_VALIDATOR_CONSTRAINTS_COLLECTION && $args[0]->value instanceof Array_) { if ($args[0]->name instanceof Identifier) { return null; } $args[0]->name = new Identifier('fields'); + + foreach ($args as $key => $arg) { + if (! $arg->name instanceof Identifier) { + continue; + } + + if ($arg->name->toString() !== 'allowExtraFields') { + continue; + } + + if (! $this->valueResolver->isFalse($arg->value)) { + continue; + } + + unset($args[$key]); + } + + $node->args = array_values($args); return $node; } From ed1e9d4d1977b95305786a4d0cc80cc7cb476439 Mon Sep 17 00:00:00 2001 From: Abdul Malik Ikhsan Date: Sat, 7 Mar 2026 22:24:45 +0700 Subject: [PATCH 2/2] add fixture --- .../with_allow_extra_fields_false.php.inc | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 rules-tests/Symfony73/Rector/Class_/ConstraintOptionsToNamedArgumentsRector/Fixture/with_allow_extra_fields_false.php.inc diff --git a/rules-tests/Symfony73/Rector/Class_/ConstraintOptionsToNamedArgumentsRector/Fixture/with_allow_extra_fields_false.php.inc b/rules-tests/Symfony73/Rector/Class_/ConstraintOptionsToNamedArgumentsRector/Fixture/with_allow_extra_fields_false.php.inc new file mode 100644 index 00000000..acff6fa6 --- /dev/null +++ b/rules-tests/Symfony73/Rector/Class_/ConstraintOptionsToNamedArgumentsRector/Fixture/with_allow_extra_fields_false.php.inc @@ -0,0 +1,41 @@ + [new Assert\NotBlank(), new Assert\Type('string')], + 'example2' => [new Assert\Type('string')], + 'example3' => [new Assert\NotBlank(), new Assert\Type('string')], + 'example4' => [new Assert\NotBlank(), new Assert\Type('string')], + ], allowExtraFields: false); + } +} + +?> +----- + [new Assert\NotBlank(), new Assert\Type('string')], + 'example2' => [new Assert\Type('string')], + 'example3' => [new Assert\NotBlank(), new Assert\Type('string')], + 'example4' => [new Assert\NotBlank(), new Assert\Type('string')], + ]); + } +} + +?>