Skip to content

Commit 6fe147b

Browse files
committed
Updated Rector to commit ef1c19fa032bc7937c0ab58ee9ea042039504486
rectorphp/rector-src@ef1c19f [nette/utils] [4.0] Add upgrade set to handle named args in Json class (#6884)
1 parent 60e0795 commit 6fe147b

15 files changed

Lines changed: 115 additions & 18 deletions

File tree

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
<?php
2+
3+
declare (strict_types=1);
4+
namespace RectorPrefix202505;
5+
6+
use Rector\Config\RectorConfig;
7+
use Rector\NetteUtils\Rector\StaticCall\UtilsJsonStaticCallNamedArgRector;
8+
return static function (RectorConfig $rectorConfig) : void {
9+
$rectorConfig->rules([UtilsJsonStaticCallNamedArgRector::class]);
10+
};
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
<?php
2+
3+
declare (strict_types=1);
4+
namespace Rector\NetteUtils\Rector\StaticCall;
5+
6+
use RectorPrefix202505\Nette\Utils\Json;
7+
use PhpParser\Node;
8+
use PhpParser\Node\Expr\StaticCall;
9+
use PhpParser\Node\Identifier;
10+
use Rector\Rector\AbstractRector;
11+
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
12+
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
13+
/**
14+
* @see \Rector\Tests\NetteUtils\Rector\StaticCall\UtilsJsonStaticCallNamedArgRector\UtilsJsonStaticCallNamedArgRectorTest
15+
*/
16+
final class UtilsJsonStaticCallNamedArgRector extends AbstractRector
17+
{
18+
public function getRuleDefinition() : RuleDefinition
19+
{
20+
return new RuleDefinition('Change ' . Json::class . '::encode() and decode() to named args', [new CodeSample(<<<'CODE_SAMPLE'
21+
use Nette\Utils\Json;
22+
23+
$encodedJson = Json::encode($data, true);
24+
$decodedJson = Json::decode($json, true);
25+
26+
CODE_SAMPLE
27+
, <<<'CODE_SAMPLE'
28+
use Nette\Utils\Json;
29+
30+
$encodedJson = Json::encode($data, pretty: true);
31+
$decodedJson = Json::decode($json, forceArrays: true);
32+
CODE_SAMPLE
33+
)]);
34+
}
35+
public function getNodeTypes() : array
36+
{
37+
return [StaticCall::class];
38+
}
39+
/**
40+
* @param StaticCall $node
41+
*/
42+
public function refactor(Node $node) : ?Node
43+
{
44+
if (!$this->isName($node->class, 'Nette\\Utils\\Json')) {
45+
return null;
46+
}
47+
if ($node->isFirstClassCallable()) {
48+
return null;
49+
}
50+
if (\count($node->getArgs()) < 2) {
51+
return null;
52+
}
53+
if (!$this->isNames($node->name, ['encode', 'decode'])) {
54+
return null;
55+
}
56+
// flip 2nd arg from true/false to named arg
57+
// check if 2nd arg is named arg already
58+
$secondArg = $node->getArgs()[1];
59+
// already set → skip
60+
if ($secondArg->name instanceof Identifier) {
61+
return null;
62+
}
63+
if ($this->isName($node->name, 'encode')) {
64+
$secondArg->name = new Identifier('pretty');
65+
return $node;
66+
}
67+
$secondArg->name = new Identifier('forceArrays');
68+
return $node;
69+
}
70+
}

src/Application/VersionResolver.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,12 @@ final class VersionResolver
1919
* @api
2020
* @var string
2121
*/
22-
public const PACKAGE_VERSION = 'fdbcc40e816caada2a14dc32ecc982b6c9a5bea5';
22+
public const PACKAGE_VERSION = 'ef1c19fa032bc7937c0ab58ee9ea042039504486';
2323
/**
2424
* @api
2525
* @var string
2626
*/
27-
public const RELEASE_DATE = '2025-05-05 19:16:31';
27+
public const RELEASE_DATE = '2025-05-05 18:47:57';
2828
/**
2929
* @var int
3030
*/

src/Bridge/SetProviderCollector.php

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,11 @@
1010
use Rector\Set\SetProvider\CoreSetProvider;
1111
use Rector\Set\SetProvider\PHPSetProvider;
1212
use Rector\Set\ValueObject\ComposerTriggeredSet;
13+
use Rector\Symfony\Set\SetProvider\Symfony3SetProvider;
14+
use Rector\Symfony\Set\SetProvider\Symfony4SetProvider;
15+
use Rector\Symfony\Set\SetProvider\Symfony5SetProvider;
16+
use Rector\Symfony\Set\SetProvider\Symfony6SetProvider;
17+
use Rector\Symfony\Set\SetProvider\Symfony7SetProvider;
1318
use Rector\Symfony\Set\SetProvider\SymfonySetProvider;
1419
use Rector\Symfony\Set\SetProvider\TwigSetProvider;
1520
/**
@@ -35,6 +40,11 @@ public function __construct(array $extraSetProviders = [])
3540
new CoreSetProvider(),
3641
new PHPUnitSetProvider(),
3742
new SymfonySetProvider(),
43+
new Symfony3SetProvider(),
44+
new Symfony4SetProvider(),
45+
new Symfony5SetProvider(),
46+
new Symfony6SetProvider(),
47+
new Symfony7SetProvider(),
3848
new DoctrineSetProvider(),
3949
new TwigSetProvider(),
4050
];

src/Configuration/RectorConfigBuilder.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -517,9 +517,9 @@ public function withPreparedSets(bool $deadCode = \false, bool $codeQuality = \f
517517
}
518518
return $this;
519519
}
520-
public function withComposerBased(bool $twig = \false, bool $doctrine = \false, bool $phpunit = \false, bool $symfony = \false) : self
520+
public function withComposerBased(bool $twig = \false, bool $doctrine = \false, bool $phpunit = \false, bool $symfony = \false, bool $netteUtils = \false) : self
521521
{
522-
$setMap = [SetGroup::TWIG => $twig, SetGroup::DOCTRINE => $doctrine, SetGroup::PHPUNIT => $phpunit, SetGroup::SYMFONY => $symfony];
522+
$setMap = [SetGroup::TWIG => $twig, SetGroup::DOCTRINE => $doctrine, SetGroup::PHPUNIT => $phpunit, SetGroup::SYMFONY => $symfony, SetGroup::NETTE_UTILS => $netteUtils];
523523
foreach ($setMap as $setPath => $isEnabled) {
524524
if ($isEnabled) {
525525
$this->setGroups[] = $setPath;

src/Set/Enum/SetGroup.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,11 @@ final class SetGroup
3636
* @var string
3737
*/
3838
public const SYMFONY = 'symfony';
39+
/**
40+
* Version-based set provider
41+
* @var string
42+
*/
43+
public const NETTE_UTILS = 'nette-utils';
3944
/**
4045
* Version-based set provider
4146
* @var string

src/Set/SetProvider/CoreSetProvider.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
use Rector\Set\Contract\SetInterface;
77
use Rector\Set\Contract\SetProviderInterface;
88
use Rector\Set\Enum\SetGroup;
9+
use Rector\Set\ValueObject\ComposerTriggeredSet;
910
use Rector\Set\ValueObject\Set;
1011
final class CoreSetProvider implements SetProviderInterface
1112
{
@@ -14,6 +15,6 @@ final class CoreSetProvider implements SetProviderInterface
1415
*/
1516
public function provide() : array
1617
{
17-
return [new Set(SetGroup::CORE, 'Code Quality', __DIR__ . '/../../../config/set/code-quality.php'), new Set(SetGroup::CORE, 'Coding Style', __DIR__ . '/../../../config/set/coding-style.php'), new Set(SetGroup::CORE, 'Dead Code', __DIR__ . '/../../../config/set/dead-code.php'), new Set(SetGroup::CORE, 'DateTime to Carbon', __DIR__ . '/../../../config/set/datetime-to-carbon.php'), new Set(SetGroup::CORE, 'Instanceof', __DIR__ . '/../../../config/set/instanceof.php'), new Set(SetGroup::CORE, 'Early return', __DIR__ . '/../../../config/set/early-return.php'), new Set(SetGroup::CORE, 'Gmagick to Imagick', __DIR__ . '/../../../config/set/gmagick-to-imagick.php'), new Set(SetGroup::CORE, 'Naming', __DIR__ . '/../../../config/set/naming.php'), new Set(SetGroup::CORE, 'Privatization', __DIR__ . '/../../../config/set/privatization.php'), new Set(SetGroup::CORE, 'Strict Booleans', __DIR__ . '/../../../config/set/strict-booleans.php'), new Set(SetGroup::CORE, 'Type Declarations', __DIR__ . '/../../../config/set/type-declaration.php')];
18+
return [new Set(SetGroup::CORE, 'Code Quality', __DIR__ . '/../../../config/set/code-quality.php'), new Set(SetGroup::CORE, 'Coding Style', __DIR__ . '/../../../config/set/coding-style.php'), new Set(SetGroup::CORE, 'Dead Code', __DIR__ . '/../../../config/set/dead-code.php'), new Set(SetGroup::CORE, 'DateTime to Carbon', __DIR__ . '/../../../config/set/datetime-to-carbon.php'), new Set(SetGroup::CORE, 'Instanceof', __DIR__ . '/../../../config/set/instanceof.php'), new Set(SetGroup::CORE, 'Early return', __DIR__ . '/../../../config/set/early-return.php'), new Set(SetGroup::CORE, 'Gmagick to Imagick', __DIR__ . '/../../../config/set/gmagick-to-imagick.php'), new Set(SetGroup::CORE, 'Naming', __DIR__ . '/../../../config/set/naming.php'), new Set(SetGroup::CORE, 'Privatization', __DIR__ . '/../../../config/set/privatization.php'), new Set(SetGroup::CORE, 'Strict Booleans', __DIR__ . '/../../../config/set/strict-booleans.php'), new Set(SetGroup::CORE, 'Type Declarations', __DIR__ . '/../../../config/set/type-declaration.php'), new ComposerTriggeredSet(SetGroup::NETTE_UTILS, 'nette/utils', '4.0', __DIR__ . '/../../../config/set/nette-utils/nette-utils4.php')];
1819
}
1920
}

vendor/composer/autoload_classmap.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1613,6 +1613,7 @@
16131613
'Rector\\Naming\\ValueObject\\VariableAndCallAssign' => $baseDir . '/rules/Naming/ValueObject/VariableAndCallAssign.php',
16141614
'Rector\\Naming\\ValueObject\\VariableAndCallForeach' => $baseDir . '/rules/Naming/ValueObject/VariableAndCallForeach.php',
16151615
'Rector\\Naming\\VariableRenamer' => $baseDir . '/rules/Naming/VariableRenamer.php',
1616+
'Rector\\NetteUtils\\Rector\\StaticCall\\UtilsJsonStaticCallNamedArgRector' => $baseDir . '/rules/NetteUtils/Rector/StaticCall/UtilsJsonStaticCallNamedArgRector.php',
16161617
'Rector\\NodeAnalyzer\\ArgsAnalyzer' => $baseDir . '/src/NodeAnalyzer/ArgsAnalyzer.php',
16171618
'Rector\\NodeAnalyzer\\BinaryOpAnalyzer' => $baseDir . '/src/NodeAnalyzer/BinaryOpAnalyzer.php',
16181619
'Rector\\NodeAnalyzer\\CallAnalyzer' => $baseDir . '/src/NodeAnalyzer/CallAnalyzer.php',
@@ -2422,7 +2423,7 @@
24222423
'Rector\\Symfony\\Symfony73\\NodeAnalyzer\\CommandArgumentsAndOptionsResolver' => $vendorDir . '/rector/rector-symfony/rules/Symfony73/NodeAnalyzer/CommandArgumentsAndOptionsResolver.php',
24232424
'Rector\\Symfony\\Symfony73\\NodeFactory\\CommandInvokeParamsFactory' => $vendorDir . '/rector/rector-symfony/rules/Symfony73/NodeFactory/CommandInvokeParamsFactory.php',
24242425
'Rector\\Symfony\\Symfony73\\Rector\\Class_\\CommandHelpToAttributeRector' => $vendorDir . '/rector/rector-symfony/rules/Symfony73/Rector/Class_/CommandHelpToAttributeRector.php',
2425-
'Rector\\Symfony\\Symfony73\\Rector\\Class_\\InvokableCommandRector' => $vendorDir . '/rector/rector-symfony/rules/Symfony73/Rector/Class_/InvokableCommandRector.php',
2426+
'Rector\\Symfony\\Symfony73\\Rector\\Class_\\InvokableCommandInputAttributeRector' => $vendorDir . '/rector/rector-symfony/rules/Symfony73/Rector/Class_/InvokableCommandInputAttributeRector.php',
24262427
'Rector\\Symfony\\Symfony73\\ValueObject\\CommandArgument' => $vendorDir . '/rector/rector-symfony/rules/Symfony73/ValueObject/CommandArgument.php',
24272428
'Rector\\Symfony\\Symfony73\\ValueObject\\CommandOption' => $vendorDir . '/rector/rector-symfony/rules/Symfony73/ValueObject/CommandOption.php',
24282429
'Rector\\Symfony\\Twig134\\Rector\\Return_\\SimpleFunctionAndFilterRector' => $vendorDir . '/rector/rector-symfony/rules/Twig134/Rector/Return_/SimpleFunctionAndFilterRector.php',

vendor/composer/autoload_static.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1832,6 +1832,7 @@ class ComposerStaticInit85a5c971754a67e64efb2b2dadc9a1fe
18321832
'Rector\\Naming\\ValueObject\\VariableAndCallAssign' => __DIR__ . '/../..' . '/rules/Naming/ValueObject/VariableAndCallAssign.php',
18331833
'Rector\\Naming\\ValueObject\\VariableAndCallForeach' => __DIR__ . '/../..' . '/rules/Naming/ValueObject/VariableAndCallForeach.php',
18341834
'Rector\\Naming\\VariableRenamer' => __DIR__ . '/../..' . '/rules/Naming/VariableRenamer.php',
1835+
'Rector\\NetteUtils\\Rector\\StaticCall\\UtilsJsonStaticCallNamedArgRector' => __DIR__ . '/../..' . '/rules/NetteUtils/Rector/StaticCall/UtilsJsonStaticCallNamedArgRector.php',
18351836
'Rector\\NodeAnalyzer\\ArgsAnalyzer' => __DIR__ . '/../..' . '/src/NodeAnalyzer/ArgsAnalyzer.php',
18361837
'Rector\\NodeAnalyzer\\BinaryOpAnalyzer' => __DIR__ . '/../..' . '/src/NodeAnalyzer/BinaryOpAnalyzer.php',
18371838
'Rector\\NodeAnalyzer\\CallAnalyzer' => __DIR__ . '/../..' . '/src/NodeAnalyzer/CallAnalyzer.php',
@@ -2641,7 +2642,7 @@ class ComposerStaticInit85a5c971754a67e64efb2b2dadc9a1fe
26412642
'Rector\\Symfony\\Symfony73\\NodeAnalyzer\\CommandArgumentsAndOptionsResolver' => __DIR__ . '/..' . '/rector/rector-symfony/rules/Symfony73/NodeAnalyzer/CommandArgumentsAndOptionsResolver.php',
26422643
'Rector\\Symfony\\Symfony73\\NodeFactory\\CommandInvokeParamsFactory' => __DIR__ . '/..' . '/rector/rector-symfony/rules/Symfony73/NodeFactory/CommandInvokeParamsFactory.php',
26432644
'Rector\\Symfony\\Symfony73\\Rector\\Class_\\CommandHelpToAttributeRector' => __DIR__ . '/..' . '/rector/rector-symfony/rules/Symfony73/Rector/Class_/CommandHelpToAttributeRector.php',
2644-
'Rector\\Symfony\\Symfony73\\Rector\\Class_\\InvokableCommandRector' => __DIR__ . '/..' . '/rector/rector-symfony/rules/Symfony73/Rector/Class_/InvokableCommandRector.php',
2645+
'Rector\\Symfony\\Symfony73\\Rector\\Class_\\InvokableCommandInputAttributeRector' => __DIR__ . '/..' . '/rector/rector-symfony/rules/Symfony73/Rector/Class_/InvokableCommandInputAttributeRector.php',
26452646
'Rector\\Symfony\\Symfony73\\ValueObject\\CommandArgument' => __DIR__ . '/..' . '/rector/rector-symfony/rules/Symfony73/ValueObject/CommandArgument.php',
26462647
'Rector\\Symfony\\Symfony73\\ValueObject\\CommandOption' => __DIR__ . '/..' . '/rector/rector-symfony/rules/Symfony73/ValueObject/CommandOption.php',
26472648
'Rector\\Symfony\\Twig134\\Rector\\Return_\\SimpleFunctionAndFilterRector' => __DIR__ . '/..' . '/rector/rector-symfony/rules/Twig134/Rector/Return_/SimpleFunctionAndFilterRector.php',

vendor/composer/installed.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1866,12 +1866,12 @@
18661866
"source": {
18671867
"type": "git",
18681868
"url": "https:\/\/github.com\/rectorphp\/rector-symfony.git",
1869-
"reference": "ad93adef585d70e72fe889275fbfcae66f8d2e33"
1869+
"reference": "37d320e78c4ea0a5e719b46e27abb6d8e9691da1"
18701870
},
18711871
"dist": {
18721872
"type": "zip",
1873-
"url": "https:\/\/api.github.com\/repos\/rectorphp\/rector-symfony\/zipball\/ad93adef585d70e72fe889275fbfcae66f8d2e33",
1874-
"reference": "ad93adef585d70e72fe889275fbfcae66f8d2e33",
1873+
"url": "https:\/\/api.github.com\/repos\/rectorphp\/rector-symfony\/zipball\/37d320e78c4ea0a5e719b46e27abb6d8e9691da1",
1874+
"reference": "37d320e78c4ea0a5e719b46e27abb6d8e9691da1",
18751875
"shasum": ""
18761876
},
18771877
"require": {
@@ -1900,7 +1900,7 @@
19001900
"tomasvotruba\/unused-public": "^2.0",
19011901
"tracy\/tracy": "^2.10"
19021902
},
1903-
"time": "2025-05-05T06:54:24+00:00",
1903+
"time": "2025-05-05T14:14:50+00:00",
19041904
"default-branch": true,
19051905
"type": "rector-extension",
19061906
"extra": {

0 commit comments

Comments
 (0)