From 9a44c19598a21aff4b6b38f9a0db3b5ca30337c6 Mon Sep 17 00:00:00 2001 From: Abdul Malik Ikhsan Date: Tue, 6 Feb 2024 13:21:14 +0700 Subject: [PATCH] [Transform] Transform rules() to withRules() on RectorConfigBuilderRector (#5566) --- .../Fixture/rules_to_with_rules.php.inc | 31 +++++++++++++++++++ .../RectorConfigBuilderRector.php | 4 +++ 2 files changed, 35 insertions(+) create mode 100644 rules-tests/Transform/Rector/FileWithoutNamespace/RectorConfigBuilderRector/Fixture/rules_to_with_rules.php.inc diff --git a/rules-tests/Transform/Rector/FileWithoutNamespace/RectorConfigBuilderRector/Fixture/rules_to_with_rules.php.inc b/rules-tests/Transform/Rector/FileWithoutNamespace/RectorConfigBuilderRector/Fixture/rules_to_with_rules.php.inc new file mode 100644 index 00000000000..7cb930bbbe6 --- /dev/null +++ b/rules-tests/Transform/Rector/FileWithoutNamespace/RectorConfigBuilderRector/Fixture/rules_to_with_rules.php.inc @@ -0,0 +1,31 @@ +rule(ReturnUnionTypeRector::class); + $rectorConfig->rules([ + RectorConfigBuilderRector::class, + TypedPropertyFromAssignsRector::class + ]); +}; + +?> +----- +withRules([ReturnUnionTypeRector::class, RectorConfigBuilderRector::class, TypedPropertyFromAssignsRector::class]); + +?> diff --git a/rules/Transform/Rector/FileWithoutNamespace/RectorConfigBuilderRector.php b/rules/Transform/Rector/FileWithoutNamespace/RectorConfigBuilderRector.php index 47a9963de25..cd8862b7fcc 100644 --- a/rules/Transform/Rector/FileWithoutNamespace/RectorConfigBuilderRector.php +++ b/rules/Transform/Rector/FileWithoutNamespace/RectorConfigBuilderRector.php @@ -19,6 +19,7 @@ use Rector\Rector\AbstractRector; use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample; use Symplify\RuleDocGenerator\ValueObject\RuleDefinition; +use Webmozart\Assert\Assert; /** * @see \Rector\Tests\Transform\Rector\FileWithoutNamespace\RectorConfigBuilderRector\RectorConfigBuilderRectorTest @@ -108,6 +109,9 @@ public function refactor(Node $node): ?Node if ($this->isName($rectorConfigStmt->expr->name, 'rule')) { $rules->items[] = new ArrayItem($rectorConfigStmt->expr->getArgs()[0]->value); + } elseif ($this->isName($rectorConfigStmt->expr->name, 'rules')) { + Assert::isAOf($rectorConfigStmt->expr->getArgs()[0]->value, Array_::class); + $rules->items = array_merge($rules->items, $rectorConfigStmt->expr->getArgs()[0]->value->items); } else { // implementing method by method return null;