-
-
Notifications
You must be signed in to change notification settings - Fork 737
Closed
rectorphp/rector-src
#1862Labels
Description
Bug Report
| Subject | Details |
|---|---|
| Rector version | bc0eac3 |
Minimal PHP Code Causing Issue
Code
<?php
use Shopware\Core\Framework\Context;
use Shopware\Core\Framework\Routing\Annotation\Since;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\Routing\Annotation\Route;
class Test {
/**
* @Since("6.4.0.1")
* @Route("/api/_admin/reset-excluded-search-term", name="api.admin.reset-excluded-search-term", methods={"POST"})
*
* @return JsonResponse
*/
public function resetExcludedSearchTerm(Context $context)
{
}
}Rector
<?php
namespace Shopware\Core\DevOps\Rector;
use PhpParser\Node;
use PhpParser\Node\Stmt\ClassMethod;
use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfo;
use Rector\BetterPhpDocParser\PhpDocManipulator\PhpDocTagRemover;
use Rector\BetterPhpDocParser\ValueObject\PhpDoc\DoctrineAnnotation\CurlyListNode;
use Rector\Core\Rector\AbstractRector;
use Rector\Php80\NodeFactory\AttrGroupsFactory;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
class TestRector extends AbstractRector
{
public function __construct(
private AttrGroupsFactory $attrGroupsFactory,
private PhpDocTagRemover $phpDocTagRemover,
) {
}
public function getRuleDefinition(): RuleDefinition
{
return new RuleDefinition('uff', []);
}
public function getNodeTypes(): array
{
return [
ClassMethod::class,
];
}
public function refactor(Node $node)
{
$phpDocInfo = $this->phpDocInfoFactory->createFromNode($node);
if (!$phpDocInfo instanceof PhpDocInfo) {
return null;
}
$route = $phpDocInfo->getByName('Route');
$defaults = $route->value->getValue('defaults');
if ($defaults === null) {
$defaults = new CurlyListNode();
}
$route->value->changeValue('defaults', $defaults);
}
}Expected Behaviour
The route just gets an additional "defaults" and not be duplicated
1) class.php:7
---------- begin diff ----------
@@ @@
class Test {
/**
* @Since("6.4.0.1")
+ * @Route("/api/_admin/reset-excluded-search-term", name="api.admin.reset-excluded-search-term", methods={"POST"}, defaults={})
* @Route("/api/_admin/reset-excluded-search-term", name="api.admin.reset-excluded-search-term", methods={"POST"})
*
* @return JsonResponse
----------- end diff -----------
[OK] 1 file would have changed (dry-run) by Rector