Updated Rector to commit 29b79786e2

29b79786e2 add getStringValue() to value resolver (#1130)
This commit is contained in:
Tomas Votruba 2021-11-02 15:11:40 +00:00
parent a3dbd26c74
commit 40f2bcdb1e
98 changed files with 2145 additions and 1058 deletions

View File

@ -249,7 +249,6 @@ require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Parser/Php7.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Parser/Tokens.php'; require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Parser/Tokens.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/ParserFactory.php'; require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/ParserFactory.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/PrettyPrinter/Standard.php'; require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/PrettyPrinter/Standard.php';
require_once __DIR__ . '/vendor/symplify/symfony-php-config/src/Exception/ValueObjectException.php';
require_once __DIR__ . '/vendor/symplify/symfony-php-config/src/Reflection/ArgumentAndParameterFactory.php'; require_once __DIR__ . '/vendor/symplify/symfony-php-config/src/Reflection/ArgumentAndParameterFactory.php';
require_once __DIR__ . '/vendor/symplify/symfony-php-config/src/ValueObjectInliner.php'; require_once __DIR__ . '/vendor/symplify/symfony-php-config/src/ValueObjectInliner.php';
require_once __DIR__ . '/vendor/symfony/dependency-injection/Loader/Configurator/AbstractConfigurator.php'; require_once __DIR__ . '/vendor/symfony/dependency-injection/Loader/Configurator/AbstractConfigurator.php';

View File

@ -82,6 +82,7 @@ CODE_SAMPLE
public function configure(array $configuration) : void public function configure(array $configuration) : void
{ {
$attributesOrder = $configuration[self::ATTRIBUTES_ORDER] ?? []; $attributesOrder = $configuration[self::ATTRIBUTES_ORDER] ?? [];
\RectorPrefix20211102\Webmozart\Assert\Assert::isArray($attributesOrder);
\RectorPrefix20211102\Webmozart\Assert\Assert::allString($attributesOrder); \RectorPrefix20211102\Webmozart\Assert\Assert::allString($attributesOrder);
$this->attributesOrderByName = \array_flip($attributesOrder); $this->attributesOrderByName = \array_flip($attributesOrder);
} }

View File

@ -36,11 +36,11 @@ final class DowngradeParameterTypeWideningRector extends \Rector\Core\Rector\Abs
*/ */
public const SAFE_TYPES_TO_METHODS = 'safe_types_to_methods'; public const SAFE_TYPES_TO_METHODS = 'safe_types_to_methods';
/** /**
* @var class-string[] * @var string[]
*/ */
private $safeTypes = []; private $safeTypes = [];
/** /**
* @var array<class-string, string[]> * @var array<string, string[]>
*/ */
private $safeTypesToMethods = []; private $safeTypesToMethods = [];
/** /**
@ -145,6 +145,7 @@ CODE_SAMPLE
public function configure(array $configuration) : void public function configure(array $configuration) : void
{ {
$safeTypes = $configuration[self::SAFE_TYPES] ?? []; $safeTypes = $configuration[self::SAFE_TYPES] ?? [];
\RectorPrefix20211102\Webmozart\Assert\Assert::isArray($safeTypes);
\RectorPrefix20211102\Webmozart\Assert\Assert::allString($safeTypes); \RectorPrefix20211102\Webmozart\Assert\Assert::allString($safeTypes);
$this->safeTypes = $safeTypes; $this->safeTypes = $safeTypes;
$safeTypesToMethods = $configuration[self::SAFE_TYPES_TO_METHODS] ?? []; $safeTypesToMethods = $configuration[self::SAFE_TYPES_TO_METHODS] ?? [];

View File

@ -101,11 +101,12 @@ CODE_SAMPLE
return null; return null;
} }
/** /**
* @param array<string, mixed> $configuration * @param array<string, FuncCallToMethodCall[]> $configuration
*/ */
public function configure(array $configuration) : void public function configure(array $configuration) : void
{ {
$funcCallsToClassMethodCalls = $configuration[self::FUNC_CALL_TO_CLASS_METHOD_CALL] ?? []; $funcCallsToClassMethodCalls = $configuration[self::FUNC_CALL_TO_CLASS_METHOD_CALL] ?? [];
\RectorPrefix20211102\Webmozart\Assert\Assert::isArray($funcCallsToClassMethodCalls);
\RectorPrefix20211102\Webmozart\Assert\Assert::allIsInstanceOf($funcCallsToClassMethodCalls, \Rector\Transform\ValueObject\FuncCallToMethodCall::class); \RectorPrefix20211102\Webmozart\Assert\Assert::allIsInstanceOf($funcCallsToClassMethodCalls, \Rector\Transform\ValueObject\FuncCallToMethodCall::class);
$this->funcNameToMethodCallNames = $funcCallsToClassMethodCalls; $this->funcNameToMethodCallNames = $funcCallsToClassMethodCalls;
} }

View File

@ -118,11 +118,12 @@ CODE_SAMPLE
return $node; return $node;
} }
/** /**
* @param array<string, mixed> $configuration * @param array<string, StaticCallToMethodCall[]> $configuration
*/ */
public function configure(array $configuration) : void public function configure(array $configuration) : void
{ {
$staticCallsToMethodCalls = $configuration[self::STATIC_CALLS_TO_METHOD_CALLS] ?? []; $staticCallsToMethodCalls = $configuration[self::STATIC_CALLS_TO_METHOD_CALLS] ?? [];
\RectorPrefix20211102\Webmozart\Assert\Assert::isArray($staticCallsToMethodCalls);
\RectorPrefix20211102\Webmozart\Assert\Assert::allIsInstanceOf($staticCallsToMethodCalls, \Rector\Transform\ValueObject\StaticCallToMethodCall::class); \RectorPrefix20211102\Webmozart\Assert\Assert::allIsInstanceOf($staticCallsToMethodCalls, \Rector\Transform\ValueObject\StaticCallToMethodCall::class);
$this->staticCallsToMethodCalls = $staticCallsToMethodCalls; $this->staticCallsToMethodCalls = $staticCallsToMethodCalls;
} }

View File

@ -75,9 +75,13 @@ CODE_SAMPLE
} }
return null; return null;
} }
/**
* @param array<string, ChangeConstantVisibility[]> $configuration
*/
public function configure(array $configuration) : void public function configure(array $configuration) : void
{ {
$classConstantVisibilityChanges = $configuration[self::CLASS_CONSTANT_VISIBILITY_CHANGES] ?? []; $classConstantVisibilityChanges = $configuration[self::CLASS_CONSTANT_VISIBILITY_CHANGES] ?? [];
\RectorPrefix20211102\Webmozart\Assert\Assert::isArray($classConstantVisibilityChanges);
\RectorPrefix20211102\Webmozart\Assert\Assert::allIsInstanceOf($classConstantVisibilityChanges, \Rector\Visibility\ValueObject\ChangeConstantVisibility::class); \RectorPrefix20211102\Webmozart\Assert\Assert::allIsInstanceOf($classConstantVisibilityChanges, \Rector\Visibility\ValueObject\ChangeConstantVisibility::class);
$this->classConstantVisibilityChanges = $classConstantVisibilityChanges; $this->classConstantVisibilityChanges = $classConstantVisibilityChanges;
} }

View File

@ -16,11 +16,11 @@ final class VersionResolver
/** /**
* @var string * @var string
*/ */
public const PACKAGE_VERSION = '954ffad1e58f9640e9581ee3a6bbbc6bbdb385fa'; public const PACKAGE_VERSION = '29b79786e2b798b0f1e6b0f3c7fba5c305e97dfb';
/** /**
* @var string * @var string
*/ */
public const RELEASE_DATE = '2021-11-02 10:14:19'; public const RELEASE_DATE = '2021-11-02 15:40:12';
public static function resolvePackageVersion() : string public static function resolvePackageVersion() : string
{ {
$process = new \RectorPrefix20211102\Symfony\Component\Process\Process(['git', 'log', '--pretty="%H"', '-n1', 'HEAD'], __DIR__); $process = new \RectorPrefix20211102\Symfony\Component\Process\Process(['git', 'log', '--pretty="%H"', '-n1', 'HEAD'], __DIR__);

View File

@ -67,6 +67,14 @@ final class ValueResolver
{ {
return $this->getValue($expr) === $value; return $this->getValue($expr) === $value;
} }
public function getStringValue(\PhpParser\Node\Expr $expr) : string
{
$resolvedValue = $this->getValue($expr);
if (!\is_string($resolvedValue)) {
throw new \Rector\Core\Exception\ShouldNotHappenException();
}
return $resolvedValue;
}
/** /**
* @return mixed|null * @return mixed|null
*/ */

2
vendor/autoload.php vendored
View File

@ -4,4 +4,4 @@
require_once __DIR__ . '/composer/autoload_real.php'; require_once __DIR__ . '/composer/autoload_real.php';
return ComposerAutoloaderInitfe4e58c29112e82d9914ab75af40f1ae::getLoader(); return ComposerAutoloaderInitb0744a6adb43e682b2e28b6c0b5a9843::getLoader();

View File

@ -1938,11 +1938,13 @@ return array(
'Rector\\Laravel\\Rector\\MethodCall\\RemoveAllOnDispatchingMethodsWithJobChainingRector' => $vendorDir . '/rector/rector-laravel/src/Rector/MethodCall/RemoveAllOnDispatchingMethodsWithJobChainingRector.php', 'Rector\\Laravel\\Rector\\MethodCall\\RemoveAllOnDispatchingMethodsWithJobChainingRector' => $vendorDir . '/rector/rector-laravel/src/Rector/MethodCall/RemoveAllOnDispatchingMethodsWithJobChainingRector.php',
'Rector\\Laravel\\Rector\\Namespace_\\FactoryDefinitionRector' => $vendorDir . '/rector/rector-laravel/src/Rector/Namespace_/FactoryDefinitionRector.php', 'Rector\\Laravel\\Rector\\Namespace_\\FactoryDefinitionRector' => $vendorDir . '/rector/rector-laravel/src/Rector/Namespace_/FactoryDefinitionRector.php',
'Rector\\Laravel\\Rector\\New_\\AddGuardToLoginEventRector' => $vendorDir . '/rector/rector-laravel/src/Rector/New_/AddGuardToLoginEventRector.php', 'Rector\\Laravel\\Rector\\New_\\AddGuardToLoginEventRector' => $vendorDir . '/rector/rector-laravel/src/Rector/New_/AddGuardToLoginEventRector.php',
'Rector\\Laravel\\Rector\\PropertyFetch\\OptionalToNullsafeOperatorRector' => $vendorDir . '/rector/rector-laravel/src/Rector/PropertyFetch/OptionalToNullsafeOperatorRector.php',
'Rector\\Laravel\\Rector\\StaticCall\\MinutesToSecondsInCacheRector' => $vendorDir . '/rector/rector-laravel/src/Rector/StaticCall/MinutesToSecondsInCacheRector.php', 'Rector\\Laravel\\Rector\\StaticCall\\MinutesToSecondsInCacheRector' => $vendorDir . '/rector/rector-laravel/src/Rector/StaticCall/MinutesToSecondsInCacheRector.php',
'Rector\\Laravel\\Rector\\StaticCall\\Redirect301ToPermanentRedirectRector' => $vendorDir . '/rector/rector-laravel/src/Rector/StaticCall/Redirect301ToPermanentRedirectRector.php', 'Rector\\Laravel\\Rector\\StaticCall\\Redirect301ToPermanentRedirectRector' => $vendorDir . '/rector/rector-laravel/src/Rector/StaticCall/Redirect301ToPermanentRedirectRector.php',
'Rector\\Laravel\\Rector\\StaticCall\\RequestStaticValidateToInjectRector' => $vendorDir . '/rector/rector-laravel/src/Rector/StaticCall/RequestStaticValidateToInjectRector.php', 'Rector\\Laravel\\Rector\\StaticCall\\RequestStaticValidateToInjectRector' => $vendorDir . '/rector/rector-laravel/src/Rector/StaticCall/RequestStaticValidateToInjectRector.php',
'Rector\\Laravel\\Rector\\StaticCall\\RouteActionCallableRector' => $vendorDir . '/rector/rector-laravel/src/Rector/StaticCall/RouteActionCallableRector.php', 'Rector\\Laravel\\Rector\\StaticCall\\RouteActionCallableRector' => $vendorDir . '/rector/rector-laravel/src/Rector/StaticCall/RouteActionCallableRector.php',
'Rector\\Laravel\\Reflection\\ClassConstantReflectionResolver' => $vendorDir . '/rector/rector-laravel/src/Reflection/ClassConstantReflectionResolver.php', 'Rector\\Laravel\\Reflection\\ClassConstantReflectionResolver' => $vendorDir . '/rector/rector-laravel/src/Reflection/ClassConstantReflectionResolver.php',
'Rector\\Laravel\\Set\\LaravelLevelSetList' => $vendorDir . '/rector/rector-laravel/src/Set/LaravelLevelSetList.php',
'Rector\\Laravel\\Set\\LaravelSetList' => $vendorDir . '/rector/rector-laravel/src/Set/LaravelSetList.php', 'Rector\\Laravel\\Set\\LaravelSetList' => $vendorDir . '/rector/rector-laravel/src/Set/LaravelSetList.php',
'Rector\\Laravel\\ValueObject\\AddArgumentDefaultValue' => $vendorDir . '/rector/rector-laravel/src/ValueObject/AddArgumentDefaultValue.php', 'Rector\\Laravel\\ValueObject\\AddArgumentDefaultValue' => $vendorDir . '/rector/rector-laravel/src/ValueObject/AddArgumentDefaultValue.php',
'Rector\\Laravel\\ValueObject\\ServiceNameTypeAndVariableName' => $vendorDir . '/rector/rector-laravel/src/ValueObject/ServiceNameTypeAndVariableName.php', 'Rector\\Laravel\\ValueObject\\ServiceNameTypeAndVariableName' => $vendorDir . '/rector/rector-laravel/src/ValueObject/ServiceNameTypeAndVariableName.php',
@ -2044,6 +2046,19 @@ return array(
'Rector\\Nette\\Latte\\Parser\\TemplateTypeParser' => $vendorDir . '/rector/rector-nette/src/Latte/Parser/TemplateTypeParser.php', 'Rector\\Nette\\Latte\\Parser\\TemplateTypeParser' => $vendorDir . '/rector/rector-nette/src/Latte/Parser/TemplateTypeParser.php',
'Rector\\Nette\\Latte\\Parser\\VarTypeParser' => $vendorDir . '/rector/rector-nette/src/Latte/Parser/VarTypeParser.php', 'Rector\\Nette\\Latte\\Parser\\VarTypeParser' => $vendorDir . '/rector/rector-nette/src/Latte/Parser/VarTypeParser.php',
'Rector\\Nette\\Naming\\NetteControlNaming' => $vendorDir . '/rector/rector-nette/src/Naming/NetteControlNaming.php', 'Rector\\Nette\\Naming\\NetteControlNaming' => $vendorDir . '/rector/rector-nette/src/Naming/NetteControlNaming.php',
'Rector\\Nette\\NeonParser\\Contract\\NeonNodeVisitorInterface' => $vendorDir . '/rector/rector-nette/packages/NeonParser/Contract/NeonNodeVisitorInterface.php',
'Rector\\Nette\\NeonParser\\Exception\\NotImplementedYetException' => $vendorDir . '/rector/rector-nette/packages/NeonParser/Exception/NotImplementedYetException.php',
'Rector\\Nette\\NeonParser\\Exception\\UnusedVirtualMethodException' => $vendorDir . '/rector/rector-nette/packages/NeonParser/Exception/UnusedVirtualMethodException.php',
'Rector\\Nette\\NeonParser\\NeonNodeTraverser' => $vendorDir . '/rector/rector-nette/packages/NeonParser/NeonNodeTraverser.php',
'Rector\\Nette\\NeonParser\\NeonNodeTraverserFactory' => $vendorDir . '/rector/rector-nette/packages/NeonParser/NeonNodeTraverserFactory.php',
'Rector\\Nette\\NeonParser\\NeonNodeVisitor\\AbstractServiceNeonNodeVisitor' => $vendorDir . '/rector/rector-nette/packages/NeonParser/NeonNodeVisitor/AbstractServiceNeonNodeVisitor.php',
'Rector\\Nette\\NeonParser\\NeonParser' => $vendorDir . '/rector/rector-nette/packages/NeonParser/NeonParser.php',
'Rector\\Nette\\NeonParser\\NodeFactory\\ServiceFactory' => $vendorDir . '/rector/rector-nette/packages/NeonParser/NodeFactory/ServiceFactory.php',
'Rector\\Nette\\NeonParser\\Node\\AbstractVirtualNode' => $vendorDir . '/rector/rector-nette/packages/NeonParser/Node/AbstractVirtualNode.php',
'Rector\\Nette\\NeonParser\\Node\\Service_' => $vendorDir . '/rector/rector-nette/packages/NeonParser/Node/Service_.php',
'Rector\\Nette\\NeonParser\\Node\\Service_\\SetupMethodCall' => $vendorDir . '/rector/rector-nette/packages/NeonParser/Node/Service_/SetupMethodCall.php',
'Rector\\Nette\\NeonParser\\Printer\\FormatPreservingNeonPrinter' => $vendorDir . '/rector/rector-nette/packages/NeonParser/Printer/FormatPreservingNeonPrinter.php',
'Rector\\Nette\\NeonParser\\Services\\ServiceTypeResolver' => $vendorDir . '/rector/rector-nette/packages/NeonParser/Services/ServiceTypeResolver.php',
'Rector\\Nette\\NodeAdding\\FunctionLikeFirstLevelStatementResolver' => $vendorDir . '/rector/rector-nette/src/NodeAdding/FunctionLikeFirstLevelStatementResolver.php', 'Rector\\Nette\\NodeAdding\\FunctionLikeFirstLevelStatementResolver' => $vendorDir . '/rector/rector-nette/src/NodeAdding/FunctionLikeFirstLevelStatementResolver.php',
'Rector\\Nette\\NodeAnalyzer\\ArrayDimFetchAnalyzer' => $vendorDir . '/rector/rector-nette/src/NodeAnalyzer/ArrayDimFetchAnalyzer.php', 'Rector\\Nette\\NodeAnalyzer\\ArrayDimFetchAnalyzer' => $vendorDir . '/rector/rector-nette/src/NodeAnalyzer/ArrayDimFetchAnalyzer.php',
'Rector\\Nette\\NodeAnalyzer\\AssignAnalyzer' => $vendorDir . '/rector/rector-nette/src/NodeAnalyzer/AssignAnalyzer.php', 'Rector\\Nette\\NodeAnalyzer\\AssignAnalyzer' => $vendorDir . '/rector/rector-nette/src/NodeAnalyzer/AssignAnalyzer.php',
@ -3205,7 +3220,6 @@ return array(
'Symplify\\RuleDocGenerator\\ValueObject\\CodeSample\\ConfiguredCodeSample' => $vendorDir . '/symplify/rule-doc-generator-contracts/src/ValueObject/CodeSample/ConfiguredCodeSample.php', 'Symplify\\RuleDocGenerator\\ValueObject\\CodeSample\\ConfiguredCodeSample' => $vendorDir . '/symplify/rule-doc-generator-contracts/src/ValueObject/CodeSample/ConfiguredCodeSample.php',
'Symplify\\RuleDocGenerator\\ValueObject\\CodeSample\\ExtraFileCodeSample' => $vendorDir . '/symplify/rule-doc-generator-contracts/src/ValueObject/CodeSample/ExtraFileCodeSample.php', 'Symplify\\RuleDocGenerator\\ValueObject\\CodeSample\\ExtraFileCodeSample' => $vendorDir . '/symplify/rule-doc-generator-contracts/src/ValueObject/CodeSample/ExtraFileCodeSample.php',
'Symplify\\RuleDocGenerator\\ValueObject\\RuleDefinition' => $vendorDir . '/symplify/rule-doc-generator-contracts/src/ValueObject/RuleDefinition.php', 'Symplify\\RuleDocGenerator\\ValueObject\\RuleDefinition' => $vendorDir . '/symplify/rule-doc-generator-contracts/src/ValueObject/RuleDefinition.php',
'Symplify\\SymfonyPhpConfig\\Exception\\ValueObjectException' => $vendorDir . '/symplify/symfony-php-config/src/Exception/ValueObjectException.php',
'Symplify\\SymfonyPhpConfig\\Reflection\\ArgumentAndParameterFactory' => $vendorDir . '/symplify/symfony-php-config/src/Reflection/ArgumentAndParameterFactory.php', 'Symplify\\SymfonyPhpConfig\\Reflection\\ArgumentAndParameterFactory' => $vendorDir . '/symplify/symfony-php-config/src/Reflection/ArgumentAndParameterFactory.php',
'Symplify\\SymfonyPhpConfig\\ValueObjectInliner' => $vendorDir . '/symplify/symfony-php-config/src/ValueObjectInliner.php', 'Symplify\\SymfonyPhpConfig\\ValueObjectInliner' => $vendorDir . '/symplify/symfony-php-config/src/ValueObjectInliner.php',
'UnhandledMatchError' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php', 'UnhandledMatchError' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php',

View File

@ -14,7 +14,7 @@ return array(
'Rector\\RectorInstaller\\' => array($vendorDir . '/rector/extension-installer/src'), 'Rector\\RectorInstaller\\' => array($vendorDir . '/rector/extension-installer/src'),
'Rector\\PHPUnit\\' => array($vendorDir . '/rector/rector-phpunit/src'), 'Rector\\PHPUnit\\' => array($vendorDir . '/rector/rector-phpunit/src'),
'Rector\\PHPOffice\\' => array($vendorDir . '/rector/rector-phpoffice/src'), 'Rector\\PHPOffice\\' => array($vendorDir . '/rector/rector-phpoffice/src'),
'Rector\\Nette\\' => array($vendorDir . '/rector/rector-nette/src'), 'Rector\\Nette\\' => array($vendorDir . '/rector/rector-nette/src', $vendorDir . '/rector/rector-nette/packages'),
'Rector\\Laravel\\' => array($vendorDir . '/rector/rector-laravel/src'), 'Rector\\Laravel\\' => array($vendorDir . '/rector/rector-laravel/src'),
'Rector\\Doctrine\\' => array($vendorDir . '/rector/rector-doctrine/src'), 'Rector\\Doctrine\\' => array($vendorDir . '/rector/rector-doctrine/src'),
'Rector\\Core\\' => array($baseDir . '/src'), 'Rector\\Core\\' => array($baseDir . '/src'),

View File

@ -2,7 +2,7 @@
// autoload_real.php @generated by Composer // autoload_real.php @generated by Composer
class ComposerAutoloaderInitfe4e58c29112e82d9914ab75af40f1ae class ComposerAutoloaderInitb0744a6adb43e682b2e28b6c0b5a9843
{ {
private static $loader; private static $loader;
@ -22,15 +22,15 @@ class ComposerAutoloaderInitfe4e58c29112e82d9914ab75af40f1ae
return self::$loader; return self::$loader;
} }
spl_autoload_register(array('ComposerAutoloaderInitfe4e58c29112e82d9914ab75af40f1ae', 'loadClassLoader'), true, true); spl_autoload_register(array('ComposerAutoloaderInitb0744a6adb43e682b2e28b6c0b5a9843', 'loadClassLoader'), true, true);
self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(\dirname(__FILE__))); self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(\dirname(__FILE__)));
spl_autoload_unregister(array('ComposerAutoloaderInitfe4e58c29112e82d9914ab75af40f1ae', 'loadClassLoader')); spl_autoload_unregister(array('ComposerAutoloaderInitb0744a6adb43e682b2e28b6c0b5a9843', 'loadClassLoader'));
$useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded()); $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
if ($useStaticLoader) { if ($useStaticLoader) {
require __DIR__ . '/autoload_static.php'; require __DIR__ . '/autoload_static.php';
call_user_func(\Composer\Autoload\ComposerStaticInitfe4e58c29112e82d9914ab75af40f1ae::getInitializer($loader)); call_user_func(\Composer\Autoload\ComposerStaticInitb0744a6adb43e682b2e28b6c0b5a9843::getInitializer($loader));
} else { } else {
$classMap = require __DIR__ . '/autoload_classmap.php'; $classMap = require __DIR__ . '/autoload_classmap.php';
if ($classMap) { if ($classMap) {
@ -42,19 +42,19 @@ class ComposerAutoloaderInitfe4e58c29112e82d9914ab75af40f1ae
$loader->register(true); $loader->register(true);
if ($useStaticLoader) { if ($useStaticLoader) {
$includeFiles = Composer\Autoload\ComposerStaticInitfe4e58c29112e82d9914ab75af40f1ae::$files; $includeFiles = Composer\Autoload\ComposerStaticInitb0744a6adb43e682b2e28b6c0b5a9843::$files;
} else { } else {
$includeFiles = require __DIR__ . '/autoload_files.php'; $includeFiles = require __DIR__ . '/autoload_files.php';
} }
foreach ($includeFiles as $fileIdentifier => $file) { foreach ($includeFiles as $fileIdentifier => $file) {
composerRequirefe4e58c29112e82d9914ab75af40f1ae($fileIdentifier, $file); composerRequireb0744a6adb43e682b2e28b6c0b5a9843($fileIdentifier, $file);
} }
return $loader; return $loader;
} }
} }
function composerRequirefe4e58c29112e82d9914ab75af40f1ae($fileIdentifier, $file) function composerRequireb0744a6adb43e682b2e28b6c0b5a9843($fileIdentifier, $file)
{ {
if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) { if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
require $file; require $file;

View File

@ -4,7 +4,7 @@
namespace Composer\Autoload; namespace Composer\Autoload;
class ComposerStaticInitfe4e58c29112e82d9914ab75af40f1ae class ComposerStaticInitb0744a6adb43e682b2e28b6c0b5a9843
{ {
public static $files = array ( public static $files = array (
'a4a119a56e50fbb293281d9a48007e0e' => __DIR__ . '/..' . '/symfony/polyfill-php80/bootstrap.php', 'a4a119a56e50fbb293281d9a48007e0e' => __DIR__ . '/..' . '/symfony/polyfill-php80/bootstrap.php',
@ -129,6 +129,7 @@ class ComposerStaticInitfe4e58c29112e82d9914ab75af40f1ae
'Rector\\Nette\\' => 'Rector\\Nette\\' =>
array ( array (
0 => __DIR__ . '/..' . '/rector/rector-nette/src', 0 => __DIR__ . '/..' . '/rector/rector-nette/src',
1 => __DIR__ . '/..' . '/rector/rector-nette/packages',
), ),
'Rector\\Laravel\\' => 'Rector\\Laravel\\' =>
array ( array (
@ -2262,11 +2263,13 @@ class ComposerStaticInitfe4e58c29112e82d9914ab75af40f1ae
'Rector\\Laravel\\Rector\\MethodCall\\RemoveAllOnDispatchingMethodsWithJobChainingRector' => __DIR__ . '/..' . '/rector/rector-laravel/src/Rector/MethodCall/RemoveAllOnDispatchingMethodsWithJobChainingRector.php', 'Rector\\Laravel\\Rector\\MethodCall\\RemoveAllOnDispatchingMethodsWithJobChainingRector' => __DIR__ . '/..' . '/rector/rector-laravel/src/Rector/MethodCall/RemoveAllOnDispatchingMethodsWithJobChainingRector.php',
'Rector\\Laravel\\Rector\\Namespace_\\FactoryDefinitionRector' => __DIR__ . '/..' . '/rector/rector-laravel/src/Rector/Namespace_/FactoryDefinitionRector.php', 'Rector\\Laravel\\Rector\\Namespace_\\FactoryDefinitionRector' => __DIR__ . '/..' . '/rector/rector-laravel/src/Rector/Namespace_/FactoryDefinitionRector.php',
'Rector\\Laravel\\Rector\\New_\\AddGuardToLoginEventRector' => __DIR__ . '/..' . '/rector/rector-laravel/src/Rector/New_/AddGuardToLoginEventRector.php', 'Rector\\Laravel\\Rector\\New_\\AddGuardToLoginEventRector' => __DIR__ . '/..' . '/rector/rector-laravel/src/Rector/New_/AddGuardToLoginEventRector.php',
'Rector\\Laravel\\Rector\\PropertyFetch\\OptionalToNullsafeOperatorRector' => __DIR__ . '/..' . '/rector/rector-laravel/src/Rector/PropertyFetch/OptionalToNullsafeOperatorRector.php',
'Rector\\Laravel\\Rector\\StaticCall\\MinutesToSecondsInCacheRector' => __DIR__ . '/..' . '/rector/rector-laravel/src/Rector/StaticCall/MinutesToSecondsInCacheRector.php', 'Rector\\Laravel\\Rector\\StaticCall\\MinutesToSecondsInCacheRector' => __DIR__ . '/..' . '/rector/rector-laravel/src/Rector/StaticCall/MinutesToSecondsInCacheRector.php',
'Rector\\Laravel\\Rector\\StaticCall\\Redirect301ToPermanentRedirectRector' => __DIR__ . '/..' . '/rector/rector-laravel/src/Rector/StaticCall/Redirect301ToPermanentRedirectRector.php', 'Rector\\Laravel\\Rector\\StaticCall\\Redirect301ToPermanentRedirectRector' => __DIR__ . '/..' . '/rector/rector-laravel/src/Rector/StaticCall/Redirect301ToPermanentRedirectRector.php',
'Rector\\Laravel\\Rector\\StaticCall\\RequestStaticValidateToInjectRector' => __DIR__ . '/..' . '/rector/rector-laravel/src/Rector/StaticCall/RequestStaticValidateToInjectRector.php', 'Rector\\Laravel\\Rector\\StaticCall\\RequestStaticValidateToInjectRector' => __DIR__ . '/..' . '/rector/rector-laravel/src/Rector/StaticCall/RequestStaticValidateToInjectRector.php',
'Rector\\Laravel\\Rector\\StaticCall\\RouteActionCallableRector' => __DIR__ . '/..' . '/rector/rector-laravel/src/Rector/StaticCall/RouteActionCallableRector.php', 'Rector\\Laravel\\Rector\\StaticCall\\RouteActionCallableRector' => __DIR__ . '/..' . '/rector/rector-laravel/src/Rector/StaticCall/RouteActionCallableRector.php',
'Rector\\Laravel\\Reflection\\ClassConstantReflectionResolver' => __DIR__ . '/..' . '/rector/rector-laravel/src/Reflection/ClassConstantReflectionResolver.php', 'Rector\\Laravel\\Reflection\\ClassConstantReflectionResolver' => __DIR__ . '/..' . '/rector/rector-laravel/src/Reflection/ClassConstantReflectionResolver.php',
'Rector\\Laravel\\Set\\LaravelLevelSetList' => __DIR__ . '/..' . '/rector/rector-laravel/src/Set/LaravelLevelSetList.php',
'Rector\\Laravel\\Set\\LaravelSetList' => __DIR__ . '/..' . '/rector/rector-laravel/src/Set/LaravelSetList.php', 'Rector\\Laravel\\Set\\LaravelSetList' => __DIR__ . '/..' . '/rector/rector-laravel/src/Set/LaravelSetList.php',
'Rector\\Laravel\\ValueObject\\AddArgumentDefaultValue' => __DIR__ . '/..' . '/rector/rector-laravel/src/ValueObject/AddArgumentDefaultValue.php', 'Rector\\Laravel\\ValueObject\\AddArgumentDefaultValue' => __DIR__ . '/..' . '/rector/rector-laravel/src/ValueObject/AddArgumentDefaultValue.php',
'Rector\\Laravel\\ValueObject\\ServiceNameTypeAndVariableName' => __DIR__ . '/..' . '/rector/rector-laravel/src/ValueObject/ServiceNameTypeAndVariableName.php', 'Rector\\Laravel\\ValueObject\\ServiceNameTypeAndVariableName' => __DIR__ . '/..' . '/rector/rector-laravel/src/ValueObject/ServiceNameTypeAndVariableName.php',
@ -2368,6 +2371,19 @@ class ComposerStaticInitfe4e58c29112e82d9914ab75af40f1ae
'Rector\\Nette\\Latte\\Parser\\TemplateTypeParser' => __DIR__ . '/..' . '/rector/rector-nette/src/Latte/Parser/TemplateTypeParser.php', 'Rector\\Nette\\Latte\\Parser\\TemplateTypeParser' => __DIR__ . '/..' . '/rector/rector-nette/src/Latte/Parser/TemplateTypeParser.php',
'Rector\\Nette\\Latte\\Parser\\VarTypeParser' => __DIR__ . '/..' . '/rector/rector-nette/src/Latte/Parser/VarTypeParser.php', 'Rector\\Nette\\Latte\\Parser\\VarTypeParser' => __DIR__ . '/..' . '/rector/rector-nette/src/Latte/Parser/VarTypeParser.php',
'Rector\\Nette\\Naming\\NetteControlNaming' => __DIR__ . '/..' . '/rector/rector-nette/src/Naming/NetteControlNaming.php', 'Rector\\Nette\\Naming\\NetteControlNaming' => __DIR__ . '/..' . '/rector/rector-nette/src/Naming/NetteControlNaming.php',
'Rector\\Nette\\NeonParser\\Contract\\NeonNodeVisitorInterface' => __DIR__ . '/..' . '/rector/rector-nette/packages/NeonParser/Contract/NeonNodeVisitorInterface.php',
'Rector\\Nette\\NeonParser\\Exception\\NotImplementedYetException' => __DIR__ . '/..' . '/rector/rector-nette/packages/NeonParser/Exception/NotImplementedYetException.php',
'Rector\\Nette\\NeonParser\\Exception\\UnusedVirtualMethodException' => __DIR__ . '/..' . '/rector/rector-nette/packages/NeonParser/Exception/UnusedVirtualMethodException.php',
'Rector\\Nette\\NeonParser\\NeonNodeTraverser' => __DIR__ . '/..' . '/rector/rector-nette/packages/NeonParser/NeonNodeTraverser.php',
'Rector\\Nette\\NeonParser\\NeonNodeTraverserFactory' => __DIR__ . '/..' . '/rector/rector-nette/packages/NeonParser/NeonNodeTraverserFactory.php',
'Rector\\Nette\\NeonParser\\NeonNodeVisitor\\AbstractServiceNeonNodeVisitor' => __DIR__ . '/..' . '/rector/rector-nette/packages/NeonParser/NeonNodeVisitor/AbstractServiceNeonNodeVisitor.php',
'Rector\\Nette\\NeonParser\\NeonParser' => __DIR__ . '/..' . '/rector/rector-nette/packages/NeonParser/NeonParser.php',
'Rector\\Nette\\NeonParser\\NodeFactory\\ServiceFactory' => __DIR__ . '/..' . '/rector/rector-nette/packages/NeonParser/NodeFactory/ServiceFactory.php',
'Rector\\Nette\\NeonParser\\Node\\AbstractVirtualNode' => __DIR__ . '/..' . '/rector/rector-nette/packages/NeonParser/Node/AbstractVirtualNode.php',
'Rector\\Nette\\NeonParser\\Node\\Service_' => __DIR__ . '/..' . '/rector/rector-nette/packages/NeonParser/Node/Service_.php',
'Rector\\Nette\\NeonParser\\Node\\Service_\\SetupMethodCall' => __DIR__ . '/..' . '/rector/rector-nette/packages/NeonParser/Node/Service_/SetupMethodCall.php',
'Rector\\Nette\\NeonParser\\Printer\\FormatPreservingNeonPrinter' => __DIR__ . '/..' . '/rector/rector-nette/packages/NeonParser/Printer/FormatPreservingNeonPrinter.php',
'Rector\\Nette\\NeonParser\\Services\\ServiceTypeResolver' => __DIR__ . '/..' . '/rector/rector-nette/packages/NeonParser/Services/ServiceTypeResolver.php',
'Rector\\Nette\\NodeAdding\\FunctionLikeFirstLevelStatementResolver' => __DIR__ . '/..' . '/rector/rector-nette/src/NodeAdding/FunctionLikeFirstLevelStatementResolver.php', 'Rector\\Nette\\NodeAdding\\FunctionLikeFirstLevelStatementResolver' => __DIR__ . '/..' . '/rector/rector-nette/src/NodeAdding/FunctionLikeFirstLevelStatementResolver.php',
'Rector\\Nette\\NodeAnalyzer\\ArrayDimFetchAnalyzer' => __DIR__ . '/..' . '/rector/rector-nette/src/NodeAnalyzer/ArrayDimFetchAnalyzer.php', 'Rector\\Nette\\NodeAnalyzer\\ArrayDimFetchAnalyzer' => __DIR__ . '/..' . '/rector/rector-nette/src/NodeAnalyzer/ArrayDimFetchAnalyzer.php',
'Rector\\Nette\\NodeAnalyzer\\AssignAnalyzer' => __DIR__ . '/..' . '/rector/rector-nette/src/NodeAnalyzer/AssignAnalyzer.php', 'Rector\\Nette\\NodeAnalyzer\\AssignAnalyzer' => __DIR__ . '/..' . '/rector/rector-nette/src/NodeAnalyzer/AssignAnalyzer.php',
@ -3529,7 +3545,6 @@ class ComposerStaticInitfe4e58c29112e82d9914ab75af40f1ae
'Symplify\\RuleDocGenerator\\ValueObject\\CodeSample\\ConfiguredCodeSample' => __DIR__ . '/..' . '/symplify/rule-doc-generator-contracts/src/ValueObject/CodeSample/ConfiguredCodeSample.php', 'Symplify\\RuleDocGenerator\\ValueObject\\CodeSample\\ConfiguredCodeSample' => __DIR__ . '/..' . '/symplify/rule-doc-generator-contracts/src/ValueObject/CodeSample/ConfiguredCodeSample.php',
'Symplify\\RuleDocGenerator\\ValueObject\\CodeSample\\ExtraFileCodeSample' => __DIR__ . '/..' . '/symplify/rule-doc-generator-contracts/src/ValueObject/CodeSample/ExtraFileCodeSample.php', 'Symplify\\RuleDocGenerator\\ValueObject\\CodeSample\\ExtraFileCodeSample' => __DIR__ . '/..' . '/symplify/rule-doc-generator-contracts/src/ValueObject/CodeSample/ExtraFileCodeSample.php',
'Symplify\\RuleDocGenerator\\ValueObject\\RuleDefinition' => __DIR__ . '/..' . '/symplify/rule-doc-generator-contracts/src/ValueObject/RuleDefinition.php', 'Symplify\\RuleDocGenerator\\ValueObject\\RuleDefinition' => __DIR__ . '/..' . '/symplify/rule-doc-generator-contracts/src/ValueObject/RuleDefinition.php',
'Symplify\\SymfonyPhpConfig\\Exception\\ValueObjectException' => __DIR__ . '/..' . '/symplify/symfony-php-config/src/Exception/ValueObjectException.php',
'Symplify\\SymfonyPhpConfig\\Reflection\\ArgumentAndParameterFactory' => __DIR__ . '/..' . '/symplify/symfony-php-config/src/Reflection/ArgumentAndParameterFactory.php', 'Symplify\\SymfonyPhpConfig\\Reflection\\ArgumentAndParameterFactory' => __DIR__ . '/..' . '/symplify/symfony-php-config/src/Reflection/ArgumentAndParameterFactory.php',
'Symplify\\SymfonyPhpConfig\\ValueObjectInliner' => __DIR__ . '/..' . '/symplify/symfony-php-config/src/ValueObjectInliner.php', 'Symplify\\SymfonyPhpConfig\\ValueObjectInliner' => __DIR__ . '/..' . '/symplify/symfony-php-config/src/ValueObjectInliner.php',
'UnhandledMatchError' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php', 'UnhandledMatchError' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php',
@ -3539,9 +3554,9 @@ class ComposerStaticInitfe4e58c29112e82d9914ab75af40f1ae
public static function getInitializer(ClassLoader $loader) public static function getInitializer(ClassLoader $loader)
{ {
return \Closure::bind(function () use ($loader) { return \Closure::bind(function () use ($loader) {
$loader->prefixLengthsPsr4 = ComposerStaticInitfe4e58c29112e82d9914ab75af40f1ae::$prefixLengthsPsr4; $loader->prefixLengthsPsr4 = ComposerStaticInitb0744a6adb43e682b2e28b6c0b5a9843::$prefixLengthsPsr4;
$loader->prefixDirsPsr4 = ComposerStaticInitfe4e58c29112e82d9914ab75af40f1ae::$prefixDirsPsr4; $loader->prefixDirsPsr4 = ComposerStaticInitb0744a6adb43e682b2e28b6c0b5a9843::$prefixDirsPsr4;
$loader->classMap = ComposerStaticInitfe4e58c29112e82d9914ab75af40f1ae::$classMap; $loader->classMap = ComposerStaticInitb0744a6adb43e682b2e28b6c0b5a9843::$classMap;
}, null, ClassLoader::class); }, null, ClassLoader::class);
} }

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

Binary file not shown.

View File

@ -1,16 +1,16 @@
-----BEGIN PGP SIGNATURE----- -----BEGIN PGP SIGNATURE-----
iQIzBAABCgAdFiEE0yaA1ZV9xxFr4pwUzxoQjQ565yAFAmF/i1sACgkQzxoQjQ56 iQIzBAABCgAdFiEE0yaA1ZV9xxFr4pwUzxoQjQ565yAFAmGBEhoACgkQzxoQjQ56
5yDALhAAhsbjCJLAUrakUztJRtsze7ka9fdbE9tPzTcY79AauMrFp/YIW5v+FrlE 5yCNQw//Z/UBLNj+Ximjhf0PYDdgs8po0dCK+XMM6YOS4XZDuOfVs/OxtpqK6OtR
O7+uvxUcNLbBPB/+v4mOIRmwFvJFjttBEKNZRviX/M3GXx/eeKqccXbkmjn/eYhu HFVA6PExlcw98zBlfragorrYd8D9LtBjDkxexPXhIYpW+Gf9tziMYfLk55ovc/NK
1l34QRdROk5cdB9KD0q47wbSWcZ4TN1JyiBxqCyE+vyBDS8EnNjSOoSf+PaVTVyt FGA5AoeYVi3e8CMssL/i/OQYEfE18yZ3rydWX8BmomGn0NFwFynx/q174UniggBY
01sDLXZdokPF7TyeHzy0T4ye9nPyPe6//yeZkmpy40+ucJI4Y3VlNCycu5JFXt6v bDdtZ6m0t6vEbx6e3F3tIlrUrYRcm2+RZO05BiQ1sx5o99fa2L9OJLUpecEF+myk
2fYSFawgkPqpm9Oy3gNSL7qm8xMYI9mi3MqXmu+RYjFl3hTsVTYXiEWGeSHZ9lKO Syxj246ABACRqHPkUHD2MIfuqT4BPbieJKOMYlGT7kMBT3xu931siK9axi5PveyA
BtzQfH6vhfeziZKRR7/7hCrzqz2s3v0WLdatkYeG9m2qtMNf6M7I3f0MwdMdCgb8 KONSG1nUqVKo8dk5dYcW0UoYtna98o3CA1obqJza71xyOyKn/d8nOCR7VCrU8Uag
hZbKFUkHFWq2cFOtz+3ZKlvpbxnXkmnGapdyNVGn5eMkr4HdmrDic/IktHp+XWub 7SWxcQiU5BJL5Xi6XgWD3tqur//RIrC88xC7OgGWCf6SlXZ7zl+teOTr5sCV4U3g
6xZMfHGz/fcuyLAE4XgPuVxx41wYYw2minmsgg2gsx2imTHM4r/ILezftxHIm0zG FsulUqNa7Bdv4yQZQ2/Y2gRuPZJUYppy6HzlLvLyd9oh9YMrGCT5Hur6TZr+LbLC
Bl4PjxVrXa9WPTibdjd+5Vqat6/9mjCoMc131kDIwqjLmZT2jCXA4SoM8wi6VYkw ubs9k7Mdp6ZpvZ2mGWJXnzAdPv40A351GX6yYEZSDlGa3gnbslreJEJZlXWri3b6
UdGumXXklSrN5qdxCpaEMpRMFIdVaiKyhB9MoQfeQ2hnPYA7blgE+htKT26E0vWC 8cN3NlozoHARCnkm1sXIIDG0VQETYqsT424oRVcGigtx+pN6QVOXWY9uK998Gb9X
dmtYQm47CKXCWPvrPKQnn0HYgOft655lde1zu2sFjQ5u+QzS9h8= qkJSGKAQiGqZLisqO+z6rJVOh4tNIqhW0Vcnp3pXhet6UfC/KX4=
=PbiR =PxoU
-----END PGP SIGNATURE----- -----END PGP SIGNATURE-----

View File

@ -9,7 +9,7 @@ namespace Rector\RectorInstaller;
*/ */
final class GeneratedConfig final class GeneratedConfig
{ {
public const EXTENSIONS = array('rector/rector-cakephp' => array('install_path' => '/home/runner/work/rector-src/rector-src/vendor/rector/rector-cakephp', 'relative_install_path' => '../../rector-cakephp', 'extra' => array('includes' => array(0 => 'config/config.php')), 'version' => '0.11.6'), 'rector/rector-doctrine' => array('install_path' => '/home/runner/work/rector-src/rector-src/vendor/rector/rector-doctrine', 'relative_install_path' => '../../rector-doctrine', 'extra' => array('includes' => array(0 => 'config/config.php')), 'version' => '0.11.26'), 'rector/rector-laravel' => array('install_path' => '/home/runner/work/rector-src/rector-src/vendor/rector/rector-laravel', 'relative_install_path' => '../../rector-laravel', 'extra' => array('includes' => array(0 => 'config/config.php')), 'version' => '0.11.8'), 'rector/rector-nette' => array('install_path' => '/home/runner/work/rector-src/rector-src/vendor/rector/rector-nette', 'relative_install_path' => '../../rector-nette', 'extra' => array('includes' => array(0 => 'config/config.php')), 'version' => '0.11.31'), 'rector/rector-phpoffice' => array('install_path' => '/home/runner/work/rector-src/rector-src/vendor/rector/rector-phpoffice', 'relative_install_path' => '../../rector-phpoffice', 'extra' => array('includes' => array(0 => 'config/config.php')), 'version' => '0.11.6'), 'rector/rector-phpunit' => array('install_path' => '/home/runner/work/rector-src/rector-src/vendor/rector/rector-phpunit', 'relative_install_path' => '../../rector-phpunit', 'extra' => array('includes' => array(0 => 'config/config.php')), 'version' => '0.11.16'), 'rector/rector-symfony' => array('install_path' => '/home/runner/work/rector-src/rector-src/vendor/rector/rector-symfony', 'relative_install_path' => '../../rector-symfony', 'extra' => array('includes' => array(0 => 'config/config.php')), 'version' => '0.11.31'), 'ssch/typo3-rector' => array('install_path' => '/home/runner/work/rector-src/rector-src/vendor/ssch/typo3-rector', 'relative_install_path' => '../../../ssch/typo3-rector', 'extra' => array('includes' => array(0 => 'config/config.php')), 'version' => 'v0.11.29')); public const EXTENSIONS = array('rector/rector-cakephp' => array('install_path' => '/home/runner/work/rector-src/rector-src/vendor/rector/rector-cakephp', 'relative_install_path' => '../../rector-cakephp', 'extra' => array('includes' => array(0 => 'config/config.php')), 'version' => '0.11.7'), 'rector/rector-doctrine' => array('install_path' => '/home/runner/work/rector-src/rector-src/vendor/rector/rector-doctrine', 'relative_install_path' => '../../rector-doctrine', 'extra' => array('includes' => array(0 => 'config/config.php')), 'version' => '0.11.26'), 'rector/rector-laravel' => array('install_path' => '/home/runner/work/rector-src/rector-src/vendor/rector/rector-laravel', 'relative_install_path' => '../../rector-laravel', 'extra' => array('includes' => array(0 => 'config/config.php')), 'version' => '0.11.9'), 'rector/rector-nette' => array('install_path' => '/home/runner/work/rector-src/rector-src/vendor/rector/rector-nette', 'relative_install_path' => '../../rector-nette', 'extra' => array('includes' => array(0 => 'config/config.php')), 'version' => '0.11.37'), 'rector/rector-phpoffice' => array('install_path' => '/home/runner/work/rector-src/rector-src/vendor/rector/rector-phpoffice', 'relative_install_path' => '../../rector-phpoffice', 'extra' => array('includes' => array(0 => 'config/config.php')), 'version' => '0.11.7'), 'rector/rector-phpunit' => array('install_path' => '/home/runner/work/rector-src/rector-src/vendor/rector/rector-phpunit', 'relative_install_path' => '../../rector-phpunit', 'extra' => array('includes' => array(0 => 'config/config.php')), 'version' => '0.11.17'), 'rector/rector-symfony' => array('install_path' => '/home/runner/work/rector-src/rector-src/vendor/rector/rector-symfony', 'relative_install_path' => '../../rector-symfony', 'extra' => array('includes' => array(0 => 'config/config.php')), 'version' => '0.11.32'), 'ssch/typo3-rector' => array('install_path' => '/home/runner/work/rector-src/rector-src/vendor/ssch/typo3-rector', 'relative_install_path' => '../../../ssch/typo3-rector', 'extra' => array('includes' => array(0 => 'config/config.php')), 'version' => 'v0.11.29'));
private function __construct() private function __construct()
{ {
} }

View File

@ -12,12 +12,13 @@
"phpstan\/phpstan": "^1.0", "phpstan\/phpstan": "^1.0",
"rector\/rector-src": "dev-main", "rector\/rector-src": "dev-main",
"phpunit\/phpunit": "^9.5", "phpunit\/phpunit": "^9.5",
"symplify\/phpstan-rules": "^9.5", "symplify\/phpstan-rules": "^10.0",
"symplify\/phpstan-extensions": "^9.5", "symplify\/phpstan-extensions": "^10.0",
"symplify\/easy-coding-standard": "^9.5", "symplify\/easy-coding-standard": "^10.0",
"symplify\/rule-doc-generator": "^9.5", "symplify\/rule-doc-generator": "^10.0",
"phpstan\/extension-installer": "^1.1", "phpstan\/extension-installer": "^1.1",
"rector\/phpstan-rules": "^0.4.7" "rector\/phpstan-rules": "^0.4.8",
"phpstan\/phpstan-webmozart-assert": "^1.0"
}, },
"autoload": { "autoload": {
"psr-4": { "psr-4": {

View File

@ -99,11 +99,9 @@ CODE_SAMPLE
{ {
$arraysToFluentCalls = $configuration[self::ARRAYS_TO_FLUENT_CALLS] ?? []; $arraysToFluentCalls = $configuration[self::ARRAYS_TO_FLUENT_CALLS] ?? [];
\RectorPrefix20211102\Webmozart\Assert\Assert::allIsInstanceOf($arraysToFluentCalls, \Rector\CakePHP\ValueObject\ArrayToFluentCall::class); \RectorPrefix20211102\Webmozart\Assert\Assert::allIsInstanceOf($arraysToFluentCalls, \Rector\CakePHP\ValueObject\ArrayToFluentCall::class);
/** @var ArrayToFluentCall[] $arraysToFluentCalls */
$this->arraysToFluentCalls = $arraysToFluentCalls; $this->arraysToFluentCalls = $arraysToFluentCalls;
$factoryMethods = $configuration[self::FACTORY_METHODS] ?? []; $factoryMethods = $configuration[self::FACTORY_METHODS] ?? [];
\RectorPrefix20211102\Webmozart\Assert\Assert::allIsInstanceOf($factoryMethods, \Rector\CakePHP\ValueObject\FactoryMethod::class); \RectorPrefix20211102\Webmozart\Assert\Assert::allIsInstanceOf($factoryMethods, \Rector\CakePHP\ValueObject\FactoryMethod::class);
/** @var FactoryMethod[] $factoryMethods */
$this->factoryMethods = $factoryMethods; $this->factoryMethods = $factoryMethods;
} }
private function matchTypeAndMethodName(\PhpParser\Node\Expr\MethodCall $methodCall) : ?\Rector\CakePHP\ValueObject\FactoryMethod private function matchTypeAndMethodName(\PhpParser\Node\Expr\MethodCall $methodCall) : ?\Rector\CakePHP\ValueObject\FactoryMethod

View File

@ -78,7 +78,6 @@ CODE_SAMPLE
{ {
$unprefixedMethodsToGetSet = $configuration[self::UNPREFIXED_METHODS_TO_GET_SET] ?? []; $unprefixedMethodsToGetSet = $configuration[self::UNPREFIXED_METHODS_TO_GET_SET] ?? [];
\RectorPrefix20211102\Webmozart\Assert\Assert::allIsInstanceOf($unprefixedMethodsToGetSet, \Rector\CakePHP\ValueObject\ModalToGetSet::class); \RectorPrefix20211102\Webmozart\Assert\Assert::allIsInstanceOf($unprefixedMethodsToGetSet, \Rector\CakePHP\ValueObject\ModalToGetSet::class);
/** @var ModalToGetSet[] $unprefixedMethodsToGetSet */
$this->unprefixedMethodsToGetSet = $unprefixedMethodsToGetSet; $this->unprefixedMethodsToGetSet = $unprefixedMethodsToGetSet;
} }
private function matchTypeAndMethodName(\PhpParser\Node\Expr\MethodCall $methodCall) : ?\Rector\CakePHP\ValueObject\ModalToGetSet private function matchTypeAndMethodName(\PhpParser\Node\Expr\MethodCall $methodCall) : ?\Rector\CakePHP\ValueObject\ModalToGetSet

View File

@ -71,7 +71,6 @@ CODE_SAMPLE
{ {
$callsWithParamRenames = $configuration[self::CALLS_WITH_PARAM_RENAMES] ?? []; $callsWithParamRenames = $configuration[self::CALLS_WITH_PARAM_RENAMES] ?? [];
\RectorPrefix20211102\Webmozart\Assert\Assert::allIsInstanceOf($callsWithParamRenames, \Rector\CakePHP\ValueObject\RenameMethodCallBasedOnParameter::class); \RectorPrefix20211102\Webmozart\Assert\Assert::allIsInstanceOf($callsWithParamRenames, \Rector\CakePHP\ValueObject\RenameMethodCallBasedOnParameter::class);
/** @var RenameMethodCallBasedOnParameter[] $callsWithParamRenames */
$this->callsWithParamRenames = $callsWithParamRenames; $this->callsWithParamRenames = $callsWithParamRenames;
} }
private function matchTypeAndMethodName(\PhpParser\Node\Expr\MethodCall $methodCall) : ?\Rector\CakePHP\ValueObject\RenameMethodCallBasedOnParameter private function matchTypeAndMethodName(\PhpParser\Node\Expr\MethodCall $methodCall) : ?\Rector\CakePHP\ValueObject\RenameMethodCallBasedOnParameter

View File

@ -9,12 +9,14 @@
"require-dev": { "require-dev": {
"rector\/rector-src": "dev-main", "rector\/rector-src": "dev-main",
"phpunit\/phpunit": "^9.5", "phpunit\/phpunit": "^9.5",
"symplify\/phpstan-rules": "^9.4", "phpstan\/phpstan": "^1.0",
"symplify\/phpstan-extensions": "^9.4", "symplify\/phpstan-rules": "^10.0",
"symplify\/easy-coding-standard": "^9.4", "symplify\/phpstan-extensions": "^10.0",
"symplify\/rule-doc-generator": "^9.4", "symplify\/easy-coding-standard": "^10.0",
"rector\/phpstan-rules": "^0.4.4", "symplify\/rule-doc-generator": "^10.0",
"phpstan\/extension-installer": "^1.1" "rector\/phpstan-rules": "^0.4.8",
"phpstan\/extension-installer": "^1.1",
"phpstan\/phpstan-webmozart-assert": "^1.0"
}, },
"autoload": { "autoload": {
"psr-4": { "psr-4": {

View File

@ -0,0 +1,11 @@
<?php
declare (strict_types=1);
namespace RectorPrefix20211102;
use Rector\Laravel\Set\LaravelSetList;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
return static function (\Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator $containerConfigurator) : void {
$containerConfigurator->import(\Rector\Laravel\Set\LaravelSetList::LARAVEL_50);
$containerConfigurator->import(\Rector\Laravel\Set\LaravelSetList::LARAVEL_51);
};

View File

@ -0,0 +1,12 @@
<?php
declare (strict_types=1);
namespace RectorPrefix20211102;
use Rector\Laravel\Set\LaravelLevelSetList;
use Rector\Laravel\Set\LaravelSetList;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
return static function (\Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator $containerConfigurator) : void {
$containerConfigurator->import(\Rector\Laravel\Set\LaravelSetList::LARAVEL_52);
$containerConfigurator->import(\Rector\Laravel\Set\LaravelLevelSetList::UP_TO_LARAVEL_51);
};

View File

@ -0,0 +1,12 @@
<?php
declare (strict_types=1);
namespace RectorPrefix20211102;
use Rector\Laravel\Set\LaravelLevelSetList;
use Rector\Laravel\Set\LaravelSetList;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
return static function (\Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator $containerConfigurator) : void {
$containerConfigurator->import(\Rector\Laravel\Set\LaravelSetList::LARAVEL_53);
$containerConfigurator->import(\Rector\Laravel\Set\LaravelLevelSetList::UP_TO_LARAVEL_52);
};

View File

@ -0,0 +1,12 @@
<?php
declare (strict_types=1);
namespace RectorPrefix20211102;
use Rector\Laravel\Set\LaravelLevelSetList;
use Rector\Laravel\Set\LaravelSetList;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
return static function (\Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator $containerConfigurator) : void {
$containerConfigurator->import(\Rector\Laravel\Set\LaravelSetList::LARAVEL_54);
$containerConfigurator->import(\Rector\Laravel\Set\LaravelLevelSetList::UP_TO_LARAVEL_53);
};

View File

@ -0,0 +1,12 @@
<?php
declare (strict_types=1);
namespace RectorPrefix20211102;
use Rector\Laravel\Set\LaravelLevelSetList;
use Rector\Laravel\Set\LaravelSetList;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
return static function (\Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator $containerConfigurator) : void {
$containerConfigurator->import(\Rector\Laravel\Set\LaravelSetList::LARAVEL_55);
$containerConfigurator->import(\Rector\Laravel\Set\LaravelLevelSetList::UP_TO_LARAVEL_54);
};

View File

@ -0,0 +1,12 @@
<?php
declare (strict_types=1);
namespace RectorPrefix20211102;
use Rector\Laravel\Set\LaravelLevelSetList;
use Rector\Laravel\Set\LaravelSetList;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
return static function (\Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator $containerConfigurator) : void {
$containerConfigurator->import(\Rector\Laravel\Set\LaravelSetList::LARAVEL_56);
$containerConfigurator->import(\Rector\Laravel\Set\LaravelLevelSetList::UP_TO_LARAVEL_55);
};

View File

@ -0,0 +1,12 @@
<?php
declare (strict_types=1);
namespace RectorPrefix20211102;
use Rector\Laravel\Set\LaravelLevelSetList;
use Rector\Laravel\Set\LaravelSetList;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
return static function (\Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator $containerConfigurator) : void {
$containerConfigurator->import(\Rector\Laravel\Set\LaravelSetList::LARAVEL_57);
$containerConfigurator->import(\Rector\Laravel\Set\LaravelLevelSetList::UP_TO_LARAVEL_56);
};

View File

@ -0,0 +1,12 @@
<?php
declare (strict_types=1);
namespace RectorPrefix20211102;
use Rector\Laravel\Set\LaravelLevelSetList;
use Rector\Laravel\Set\LaravelSetList;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
return static function (\Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator $containerConfigurator) : void {
$containerConfigurator->import(\Rector\Laravel\Set\LaravelSetList::LARAVEL_58);
$containerConfigurator->import(\Rector\Laravel\Set\LaravelLevelSetList::UP_TO_LARAVEL_57);
};

View File

@ -0,0 +1,12 @@
<?php
declare (strict_types=1);
namespace RectorPrefix20211102;
use Rector\Laravel\Set\LaravelLevelSetList;
use Rector\Laravel\Set\LaravelSetList;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
return static function (\Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator $containerConfigurator) : void {
$containerConfigurator->import(\Rector\Laravel\Set\LaravelSetList::LARAVEL_60);
$containerConfigurator->import(\Rector\Laravel\Set\LaravelLevelSetList::UP_TO_LARAVEL_58);
};

View File

@ -0,0 +1,12 @@
<?php
declare (strict_types=1);
namespace RectorPrefix20211102;
use Rector\Laravel\Set\LaravelLevelSetList;
use Rector\Laravel\Set\LaravelSetList;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
return static function (\Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator $containerConfigurator) : void {
$containerConfigurator->import(\Rector\Laravel\Set\LaravelSetList::LARAVEL_70);
$containerConfigurator->import(\Rector\Laravel\Set\LaravelLevelSetList::UP_TO_LARAVEL_60);
};

View File

@ -0,0 +1,12 @@
<?php
declare (strict_types=1);
namespace RectorPrefix20211102;
use Rector\Laravel\Set\LaravelLevelSetList;
use Rector\Laravel\Set\LaravelSetList;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
return static function (\Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator $containerConfigurator) : void {
$containerConfigurator->import(\Rector\Laravel\Set\LaravelSetList::LARAVEL_80);
$containerConfigurator->import(\Rector\Laravel\Set\LaravelLevelSetList::UP_TO_LARAVEL_70);
};

View File

@ -1,4 +1,4 @@
# 19 Rules Overview # 20 Rules Overview
## AddArgumentDefaultValueRector ## AddArgumentDefaultValueRector
@ -294,6 +294,41 @@ Change minutes argument to seconds in `Illuminate\Contracts\Cache\Store` and Ill
<br> <br>
## OptionalToNullsafeOperatorRector
Convert simple calls to optional helper to use the nullsafe operator
:wrench: **configure it!**
- class: [`Rector\Laravel\Rector\PropertyFetch\OptionalToNullsafeOperatorRector`](../src/Rector/PropertyFetch/OptionalToNullsafeOperatorRector.php)
```php
use Rector\Laravel\Rector\PropertyFetch\OptionalToNullsafeOperatorRector;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
return static function (ContainerConfigurator $containerConfigurator): void {
$services = $containerConfigurator->services();
$services->set(OptionalToNullsafeOperatorRector::class)
->call('configure', [[
OptionalToNullsafeOperatorRector::EXCLUDE_METHODS => ['present'],
]]);
};
```
```diff
-optional($user)->getKey();
-optional($user)->id;
+$user?->getKey();
+$user?->id;
// macro methods
optional($user)->present()->getKey();
```
<br>
## PropertyDeferToDeferrableProviderToRector ## PropertyDeferToDeferrableProviderToRector
Change deprecated `$defer` = true; to `Illuminate\Contracts\Support\DeferrableProvider` interface Change deprecated `$defer` = true; to `Illuminate\Contracts\Support\DeferrableProvider` interface

View File

@ -5,7 +5,9 @@ namespace RectorPrefix20211102;
use Rector\Core\Configuration\Option; use Rector\Core\Configuration\Option;
use Rector\Nette\NodeAnalyzer\BinaryOpAnalyzer; use Rector\Nette\NodeAnalyzer\BinaryOpAnalyzer;
use Rector\Php55\Rector\String_\StringClassNameToClassConstantRector;
use Rector\PHPUnit\NodeAnalyzer\TestsNodeAnalyzer; use Rector\PHPUnit\NodeAnalyzer\TestsNodeAnalyzer;
use Rector\Set\ValueObject\LevelSetList;
use Rector\Set\ValueObject\SetList; use Rector\Set\ValueObject\SetList;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator; use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
return static function (\Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator $containerConfigurator) : void { return static function (\Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator $containerConfigurator) : void {
@ -16,17 +18,10 @@ return static function (\Symfony\Component\DependencyInjection\Loader\Configurat
// for tests // for tests
'*/Source/*', '*/Source/*',
'*/Fixture/*', '*/Fixture/*',
// skip for handle scoped, like in the rector-src as well
// @see https://github.com/rectorphp/rector-src/blob/7f73cf017214257c170d34db3af7283eaeeab657/rector.php#L71
\Rector\Php55\Rector\String_\StringClassNameToClassConstantRector::class,
]); ]);
// needed for DEAD_CODE list, just in split package like this $containerConfigurator->import(\Rector\Set\ValueObject\LevelSetList::UP_TO_PHP_80);
$containerConfigurator->import(__DIR__ . '/config/config.php');
// reuqired for PHP 8
$services = $containerConfigurator->services();
$services->defaults()->public()->autoconfigure()->autowire();
// needed for sets bellow, only for this split package
$services->set(\Rector\Nette\NodeAnalyzer\BinaryOpAnalyzer::class);
$services->set(\Rector\PHPUnit\NodeAnalyzer\TestsNodeAnalyzer::class);
$containerConfigurator->import(\Rector\Set\ValueObject\SetList::PHP_80);
$containerConfigurator->import(\Rector\Set\ValueObject\SetList::PHP_74);
$containerConfigurator->import(\Rector\Set\ValueObject\SetList::PHP_73);
$containerConfigurator->import(\Rector\Set\ValueObject\SetList::DEAD_CODE); $containerConfigurator->import(\Rector\Set\ValueObject\SetList::DEAD_CODE);
}; };

View File

@ -90,7 +90,11 @@ final class ModelFactoryNodeFactory
if (!$methodCall->args[1] instanceof \PhpParser\Node\Arg) { if (!$methodCall->args[1] instanceof \PhpParser\Node\Arg) {
return null; return null;
} }
return $this->createPublicMethod($this->valueResolver->getValue($methodCall->args[1]->value), [$return]); $methodName = $this->valueResolver->getValue($methodCall->args[1]->value);
if (!\is_string($methodName)) {
return null;
}
return $this->createPublicMethod($methodName, [$return]);
} }
public function createEmptyConfigure() : \PhpParser\Node\Stmt\ClassMethod public function createEmptyConfigure() : \PhpParser\Node\Stmt\ClassMethod
{ {

View File

@ -15,6 +15,7 @@ use Rector\Core\Rector\AbstractRector;
use RectorPrefix20211102\Symplify\Astral\ValueObject\NodeBuilder\PropertyBuilder; use RectorPrefix20211102\Symplify\Astral\ValueObject\NodeBuilder\PropertyBuilder;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample; use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition; use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
use RectorPrefix20211102\Webmozart\Assert\Assert;
/** /**
* @see https://github.com/laravel/framework/pull/32856 * @see https://github.com/laravel/framework/pull/32856
* *
@ -80,6 +81,9 @@ CODE_SAMPLE
return null; return null;
} }
$dates = $this->valueResolver->getValue($datesPropertyProperty->default); $dates = $this->valueResolver->getValue($datesPropertyProperty->default);
if (!\is_array($dates)) {
return null;
}
if ($dates === []) { if ($dates === []) {
return null; return null;
} }
@ -96,6 +100,7 @@ CODE_SAMPLE
$casts = $this->valueResolver->getValue($castsPropertyProperty->default); $casts = $this->valueResolver->getValue($castsPropertyProperty->default);
// exclude attributes added in $casts // exclude attributes added in $casts
$missingDates = \array_diff($dates, \array_keys($casts)); $missingDates = \array_diff($dates, \array_keys($casts));
\RectorPrefix20211102\Webmozart\Assert\Assert::allString($missingDates);
foreach ($missingDates as $missingDate) { foreach ($missingDates as $missingDate) {
$castsPropertyProperty->default->items[] = new \PhpParser\Node\Expr\ArrayItem(new \PhpParser\Node\Scalar\String_('datetime'), new \PhpParser\Node\Scalar\String_($missingDate)); $castsPropertyProperty->default->items[] = new \PhpParser\Node\Expr\ArrayItem(new \PhpParser\Node\Scalar\String_('datetime'), new \PhpParser\Node\Scalar\String_($missingDate));
} }

View File

@ -12,6 +12,7 @@ use PHPStan\Type\ObjectType;
use Rector\Core\Rector\AbstractRector; use Rector\Core\Rector\AbstractRector;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample; use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition; use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
use RectorPrefix20211102\Webmozart\Assert\Assert;
/** /**
* @see https://laravel.com/docs/7.x/database-testing#creating-models * @see https://laravel.com/docs/7.x/database-testing#creating-models
* @see https://laravel.com/docs/8.x/database-testing#applying-states * @see https://laravel.com/docs/8.x/database-testing#applying-states
@ -52,6 +53,7 @@ CODE_SAMPLE
} }
$var = $node->var; $var = $node->var;
$states = $this->getStatesFromArgs($node->args); $states = $this->getStatesFromArgs($node->args);
\RectorPrefix20211102\Webmozart\Assert\Assert::allString($states);
foreach ($states as $state) { foreach ($states as $state) {
$var = $this->nodeFactory->createMethodCall($var, $state); $var = $this->nodeFactory->createMethodCall($var, $state);
} }

View File

@ -0,0 +1,134 @@
<?php
declare (strict_types=1);
namespace Rector\Laravel\Rector\PropertyFetch;
use PhpParser\Node;
use PhpParser\Node\Arg;
use PhpParser\Node\Expr;
use PhpParser\Node\Expr\Array_;
use PhpParser\Node\Expr\ClassConstFetch;
use PhpParser\Node\Expr\ConstFetch;
use PhpParser\Node\Expr\FuncCall;
use PhpParser\Node\Expr\MethodCall;
use PhpParser\Node\Expr\NullsafeMethodCall;
use PhpParser\Node\Expr\NullsafePropertyFetch;
use PhpParser\Node\Expr\PropertyFetch;
use PhpParser\Node\Scalar;
use Rector\Core\Contract\Rector\ConfigurableRectorInterface;
use Rector\Core\NodeAnalyzer\ArgsAnalyzer;
use Rector\Core\Rector\AbstractRector;
use Rector\Core\ValueObject\PhpVersion;
use Rector\VersionBonding\Contract\MinPhpVersionInterface;
use RectorPrefix20211102\Symplify\PackageBuilder\Php\TypeChecker;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\ConfiguredCodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
use RectorPrefix20211102\Webmozart\Assert\Assert;
/**
* @see https://github.com/laravel/laravel/pull/5670
* @see https://github.com/laravel/framework/pull/38868
* @see https://wiki.php.net/rfc/nullsafe_operator
*
* @see \Rector\Laravel\Tests\Rector\PropertyFetch\OptionalToNullsafeOperatorRector\OptionalToNullsafeOperatorRectorTest
*/
final class OptionalToNullsafeOperatorRector extends \Rector\Core\Rector\AbstractRector implements \Rector\VersionBonding\Contract\MinPhpVersionInterface, \Rector\Core\Contract\Rector\ConfigurableRectorInterface
{
/**
* @var string
*/
public const EXCLUDE_METHODS = 'exclude_methods';
/**
* @var array<class-string<Expr>>
*/
private const SKIP_VALUE_TYPES = [\PhpParser\Node\Expr\ConstFetch::class, \PhpParser\Node\Scalar::class, \PhpParser\Node\Expr\Array_::class, \PhpParser\Node\Expr\ClassConstFetch::class];
/**
* @var string[]
*/
private $excludeMethods = [];
/**
* @var \Symplify\PackageBuilder\Php\TypeChecker
*/
private $typeChecker;
/**
* @var \Rector\Core\NodeAnalyzer\ArgsAnalyzer
*/
private $argsAnalyzer;
public function __construct(\RectorPrefix20211102\Symplify\PackageBuilder\Php\TypeChecker $typeChecker, \Rector\Core\NodeAnalyzer\ArgsAnalyzer $argsAnalyzer)
{
$this->typeChecker = $typeChecker;
$this->argsAnalyzer = $argsAnalyzer;
}
public function getRuleDefinition() : \Symplify\RuleDocGenerator\ValueObject\RuleDefinition
{
return new \Symplify\RuleDocGenerator\ValueObject\RuleDefinition('Convert simple calls to optional helper to use the nullsafe operator', [new \Symplify\RuleDocGenerator\ValueObject\CodeSample\ConfiguredCodeSample(<<<'CODE_SAMPLE'
optional($user)->getKey();
optional($user)->id;
// macro methods
optional($user)->present()->getKey();
CODE_SAMPLE
, <<<'CODE_SAMPLE'
$user?->getKey();
$user?->id;
// macro methods
optional($user)->present()->getKey();
CODE_SAMPLE
, [self::EXCLUDE_METHODS => ['present']])]);
}
/**
* @return array<class-string<Node>>
*/
public function getNodeTypes() : array
{
return [\PhpParser\Node\Expr\PropertyFetch::class, \PhpParser\Node\Expr\MethodCall::class];
}
/**
* @param MethodCall|PropertyFetch $node
*/
public function refactor(\PhpParser\Node $node) : ?\PhpParser\Node
{
if (!$node->var instanceof \PhpParser\Node\Expr\FuncCall) {
return null;
}
if (!$this->isName($node->var->name, 'optional')) {
return null;
}
// exclude macro methods
if ($node instanceof \PhpParser\Node\Expr\MethodCall && $this->isNames($node->name, $this->excludeMethods)) {
return null;
}
if (!$this->argsAnalyzer->isArgInstanceInArgsPosition($node->var->args, 0)) {
return null;
}
// skip if the second arg exists and not null
if ($this->hasCallback($node->var)) {
return null;
}
/** @var Arg $firstArg */
$firstArg = $node->var->args[0];
// skip if the first arg cannot be used as variable directly
if ($this->typeChecker->isInstanceOf($firstArg->value, self::SKIP_VALUE_TYPES)) {
return null;
}
if ($node instanceof \PhpParser\Node\Expr\PropertyFetch) {
return new \PhpParser\Node\Expr\NullsafePropertyFetch($firstArg->value, $node->name);
}
return new \PhpParser\Node\Expr\NullsafeMethodCall($firstArg->value, $node->name, $node->args);
}
public function provideMinPhpVersion() : int
{
return \Rector\Core\ValueObject\PhpVersion::PHP_80;
}
/**
* @param array<string, string[]> $configuration
*/
public function configure(array $configuration) : void
{
$excludeMethods = $configuration[self::EXCLUDE_METHODS] ?? [];
\RectorPrefix20211102\Webmozart\Assert\Assert::allString($excludeMethods);
$this->excludeMethods = $excludeMethods;
}
private function hasCallback(\PhpParser\Node\Expr\FuncCall $funcCall) : bool
{
return isset($funcCall->args[1]) && $funcCall->args[1] instanceof \PhpParser\Node\Arg && !$this->valueResolver->isNull($funcCall->args[1]->value);
}
}

View File

@ -9,6 +9,7 @@ use PhpParser\Node\Expr;
use PhpParser\Node\Expr\MethodCall; use PhpParser\Node\Expr\MethodCall;
use PhpParser\Node\Expr\StaticCall; use PhpParser\Node\Expr\StaticCall;
use PhpParser\Node\Identifier; use PhpParser\Node\Identifier;
use PHPStan\Analyser\Scope;
use PHPStan\Reflection\Php\PhpMethodReflection; use PHPStan\Reflection\Php\PhpMethodReflection;
use Rector\Core\Contract\Rector\ConfigurableRectorInterface; use Rector\Core\Contract\Rector\ConfigurableRectorInterface;
use Rector\Core\Rector\AbstractRector; use Rector\Core\Rector\AbstractRector;
@ -18,6 +19,7 @@ use Rector\NodeTypeResolver\Node\AttributeKey;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\ConfiguredCodeSample; use Symplify\RuleDocGenerator\ValueObject\CodeSample\ConfiguredCodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition; use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
use Symplify\SmartFileSystem\SmartFileInfo; use Symplify\SmartFileSystem\SmartFileInfo;
use RectorPrefix20211102\Webmozart\Assert\Assert;
/** /**
* @see https://laravel.com/docs/8.x/upgrade#automatic-controller-namespace-prefixing * @see https://laravel.com/docs/8.x/upgrade#automatic-controller-namespace-prefixing
* *
@ -36,7 +38,11 @@ final class RouteActionCallableRector extends \Rector\Core\Rector\AbstractRector
/** /**
* @var string * @var string
*/ */
private $namespace = 'App\\Http\\Controllers'; private const DEFAULT_NAMESPACE = 'App\\Http\\Controllers';
/**
* @var string
*/
private $namespace = self::DEFAULT_NAMESPACE;
/** /**
* @var array<string, string> * @var array<string, string>
*/ */
@ -87,11 +93,15 @@ CODE_SAMPLE
return null; return null;
} }
$arg = $node->args[$position]; $arg = $node->args[$position];
$segments = $this->resolveControllerFromAction($this->valueResolver->getValue($arg->value)); $argValue = $this->valueResolver->getValue($arg->value);
$segments = $this->resolveControllerFromAction($argValue);
if ($segments === null) { if ($segments === null) {
return null; return null;
} }
$scope = $node->getAttribute(\Rector\NodeTypeResolver\Node\AttributeKey::SCOPE); $scope = $node->getAttribute(\Rector\NodeTypeResolver\Node\AttributeKey::SCOPE);
if (!$scope instanceof \PHPStan\Analyser\Scope) {
return null;
}
$phpMethodReflection = $this->reflectionResolver->resolveMethodReflection($segments[0], $segments[1], $scope); $phpMethodReflection = $this->reflectionResolver->resolveMethodReflection($segments[0], $segments[1], $scope);
if (!$phpMethodReflection instanceof \PHPStan\Reflection\Php\PhpMethodReflection) { if (!$phpMethodReflection instanceof \PHPStan\Reflection\Php\PhpMethodReflection) {
return null; return null;
@ -99,22 +109,29 @@ CODE_SAMPLE
$node->args[$position]->value = $this->nodeFactory->createArray([$this->nodeFactory->createClassConstReference($segments[0]), $segments[1]]); $node->args[$position]->value = $this->nodeFactory->createArray([$this->nodeFactory->createClassConstReference($segments[0]), $segments[1]]);
return $node; return $node;
} }
/**
* @param array<string, string|mixed[]> $configuration
*/
public function configure(array $configuration) : void public function configure(array $configuration) : void
{ {
$this->routes = $configuration[self::ROUTES] ?? []; $routes = $configuration[self::ROUTES] ?? [];
if (isset($configuration[self::NAMESPACE])) { \RectorPrefix20211102\Webmozart\Assert\Assert::allString($routes);
$this->namespace = $configuration[self::NAMESPACE]; \RectorPrefix20211102\Webmozart\Assert\Assert::allString(\array_keys($routes));
} $this->routes = $routes;
$namespace = $configuration[self::NAMESPACE] ?? self::DEFAULT_NAMESPACE;
\RectorPrefix20211102\Webmozart\Assert\Assert::string($namespace);
$this->namespace = $namespace;
} }
/** /**
* @param mixed $action
* @return array<string>|null * @return array<string>|null
* @param mixed $action
*/ */
private function resolveControllerFromAction($action) : ?array private function resolveControllerFromAction($action) : ?array
{ {
if (!$this->isActionString($action)) { if (!$this->isActionString($action)) {
return null; return null;
} }
/** @var string $action */
$segments = \explode('@', $action); $segments = \explode('@', $action);
if (\count($segments) !== 2) { if (\count($segments) !== 2) {
return null; return null;

View File

@ -0,0 +1,53 @@
<?php
declare (strict_types=1);
namespace Rector\Laravel\Set;
use Rector\Set\Contract\SetListInterface;
final class LaravelLevelSetList implements \Rector\Set\Contract\SetListInterface
{
/**
* @var string
*/
public const UP_TO_LARAVEL_51 = __DIR__ . '/../../config/sets/level/up-to-laravel-51.php';
/**
* @var string
*/
public const UP_TO_LARAVEL_52 = __DIR__ . '/../../config/sets/level/up-to-laravel-52.php';
/**
* @var string
*/
public const UP_TO_LARAVEL_53 = __DIR__ . '/../../config/sets/level/up-to-laravel-53.php';
/**
* @var string
*/
public const UP_TO_LARAVEL_54 = __DIR__ . '/../../config/sets/level/up-to-laravel-54.php';
/**
* @var string
*/
public const UP_TO_LARAVEL_55 = __DIR__ . '/../../config/sets/level/up-to-laravel-55.php';
/**
* @var string
*/
public const UP_TO_LARAVEL_56 = __DIR__ . '/../../config/sets/level/up-to-laravel-56.php';
/**
* @var string
*/
public const UP_TO_LARAVEL_57 = __DIR__ . '/../../config/sets/level/up-to-laravel-57.php';
/**
* @var string
*/
public const UP_TO_LARAVEL_58 = __DIR__ . '/../../config/sets/level/up-to-laravel-58.php';
/**
* @var string
*/
public const UP_TO_LARAVEL_60 = __DIR__ . '/../../config/sets/level/up-to-laravel-60.php';
/**
* @var string
*/
public const UP_TO_LARAVEL_70 = __DIR__ . '/../../config/sets/level/up-to-laravel-70.php';
/**
* @var string
*/
public const UP_TO_LARAVEL_80 = __DIR__ . '/../../config/sets/level/up-to-laravel-80.php';
}

View File

@ -7,25 +7,30 @@
"php": ">=8.0", "php": ">=8.0",
"ext-xml": "*", "ext-xml": "*",
"danielstjules\/stringy": "^3.1", "danielstjules\/stringy": "^3.1",
"rector\/rector-phpunit": "^0.11" "rector\/rector-phpunit": "^0.11.15"
}, },
"require-dev": { "require-dev": {
"rector\/rector-src": "dev-main", "rector\/rector-src": "dev-main",
"phpunit\/phpunit": "^9.5", "phpunit\/phpunit": "^9.5",
"symplify\/phpstan-rules": "^9.4", "symplify\/phpstan-extensions": "^10.0",
"symplify\/phpstan-extensions": "^9.4", "symplify\/phpstan-rules": "^10.0",
"symplify\/easy-coding-standard": "^9.4", "symplify\/easy-coding-standard": "^10.0",
"symplify\/monorepo-builder": "^10.0",
"phpstan\/phpstan-nette": "^1.0", "phpstan\/phpstan-nette": "^1.0",
"nette\/application": "^3.1", "nette\/application": "^3.1",
"nette\/di": "^3.0", "nette\/di": "^3.0",
"nette\/forms": "3.0.*", "nette\/forms": "3.0.*",
"symplify\/rule-doc-generator": "^9.4", "symplify\/rule-doc-generator": "^10.0",
"phpstan\/extension-installer": "^1.1", "phpstan\/extension-installer": "^1.1",
"rector\/phpstan-rules": "^0.4.4" "rector\/phpstan-rules": "^0.4.7",
"phpstan\/phpstan-webmozart-assert": "^1.0"
}, },
"autoload": { "autoload": {
"psr-4": { "psr-4": {
"Rector\\Nette\\": "src" "Rector\\Nette\\": [
"src",
"packages"
]
} }
}, },
"autoload-dev": { "autoload-dev": {
@ -37,6 +42,7 @@
] ]
}, },
"scripts": { "scripts": {
"release": "vendor\/bin\/monorepo-builder release patch --ansi",
"phpstan": "vendor\/bin\/phpstan analyse --ansi --error-format symplify", "phpstan": "vendor\/bin\/phpstan analyse --ansi --error-format symplify",
"check-cs": "vendor\/bin\/ecs check --ansi", "check-cs": "vendor\/bin\/ecs check --ansi",
"fix-cs": "vendor\/bin\/ecs check --fix --ansi", "fix-cs": "vendor\/bin\/ecs check --fix --ansi",

View File

@ -8,6 +8,7 @@ use Rector\Nette\Rector\Latte\RenameMethodLatteRector;
use Rector\Nette\Rector\Neon\RenameMethodNeonRector; use Rector\Nette\Rector\Neon\RenameMethodNeonRector;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator; use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
return static function (\Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator $containerConfigurator) : void { return static function (\Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator $containerConfigurator) : void {
$containerConfigurator->import(__DIR__ . '/packages.php');
$services = $containerConfigurator->services(); $services = $containerConfigurator->services();
$services->defaults()->public()->autowire()->autoconfigure(); $services->defaults()->public()->autowire()->autoconfigure();
$services->load('Rector\\Nette\\', __DIR__ . '/../src')->exclude([__DIR__ . '/../src/Contract', __DIR__ . '/../src/Rector', __DIR__ . '/../src/ValueObject', __DIR__ . '/../src/Kdyby/Rector', __DIR__ . '/../src/Kdyby/ValueObject']); $services->load('Rector\\Nette\\', __DIR__ . '/../src')->exclude([__DIR__ . '/../src/Contract', __DIR__ . '/../src/Rector', __DIR__ . '/../src/ValueObject', __DIR__ . '/../src/Kdyby/Rector', __DIR__ . '/../src/Kdyby/ValueObject']);

View File

@ -0,0 +1,13 @@
<?php
declare (strict_types=1);
namespace RectorPrefix20211102;
use RectorPrefix20211102\Nette\Neon\Decoder;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
return static function (\Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator $containerConfigurator) : void {
$services = $containerConfigurator->services();
$services->defaults()->public()->autowire()->autoconfigure();
$services->load('Rector\\Nette\\NeonParser\\', __DIR__ . '/../packages/NeonParser')->exclude([__DIR__ . '/../packages/NeonParser/NeonNodeTraverser.php', __DIR__ . '/../packages/NeonParser/Node']);
$services->set(\RectorPrefix20211102\Nette\Neon\Decoder::class);
};

View File

@ -0,0 +1,15 @@
<?php
declare (strict_types=1);
namespace RectorPrefix20211102;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
use RectorPrefix20211102\Symplify\MonorepoBuilder\Release\ReleaseWorker\PushTagReleaseWorker;
use RectorPrefix20211102\Symplify\MonorepoBuilder\Release\ReleaseWorker\TagVersionReleaseWorker;
return static function (\Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator $containerConfigurator) : void {
$services = $containerConfigurator->services();
$services->defaults()->autowire();
// @see https://github.com/symplify/monorepo-builder#6-release-flow
$services->set(\RectorPrefix20211102\Symplify\MonorepoBuilder\Release\ReleaseWorker\TagVersionReleaseWorker::class);
$services->set(\RectorPrefix20211102\Symplify\MonorepoBuilder\Release\ReleaseWorker\PushTagReleaseWorker::class);
};

View File

@ -0,0 +1,16 @@
<?php
namespace Rector\Nette\NeonParser\Contract;
use RectorPrefix20211102\Nette\Neon\Node;
interface NeonNodeVisitorInterface
{
/**
* @return class-string<\PhpParser\Node>
*/
public function getNodeType() : string;
/**
* @param \Nette\Neon\Node $node
*/
public function enterNode($node) : \RectorPrefix20211102\Nette\Neon\Node;
}

View File

@ -0,0 +1,9 @@
<?php
declare (strict_types=1);
namespace Rector\Nette\NeonParser\Exception;
use Exception;
final class NotImplementedYetException extends \Exception
{
}

View File

@ -0,0 +1,9 @@
<?php
declare (strict_types=1);
namespace Rector\Nette\NeonParser\Exception;
use Exception;
final class UnusedVirtualMethodException extends \Exception
{
}

View File

@ -0,0 +1,63 @@
<?php
declare (strict_types=1);
namespace Rector\Nette\NeonParser;
use RectorPrefix20211102\Nette\Neon\Node;
use Rector\Nette\Contract\Rector\NeonRectorInterface;
use Rector\Nette\NeonParser\Contract\NeonNodeVisitorInterface;
use Rector\Nette\NeonParser\Node\Service_;
use Rector\Nette\NeonParser\NodeFactory\ServiceFactory;
use Rector\Nette\NeonParser\Services\ServiceTypeResolver;
/**
* @see https://forum.nette.org/en/34804-neon-with-ast-parser-and-format-preserving-printing
*/
final class NeonNodeTraverser
{
/**
* @var NeonNodeVisitorInterface[]
*/
private $neonRectors = [];
/**
* @var \Rector\Nette\NeonParser\Services\ServiceTypeResolver
*/
private $serviceTypeResolver;
/**
* @var \Rector\Nette\NeonParser\NodeFactory\ServiceFactory
*/
private $serviceFactory;
public function __construct(\Rector\Nette\NeonParser\Services\ServiceTypeResolver $serviceTypeResolver, \Rector\Nette\NeonParser\NodeFactory\ServiceFactory $serviceFactory)
{
$this->serviceTypeResolver = $serviceTypeResolver;
$this->serviceFactory = $serviceFactory;
}
public function addNeonNodeVisitor(\Rector\Nette\Contract\Rector\NeonRectorInterface $neonRector) : void
{
$this->neonRectors[] = $neonRector;
}
public function traverse(\RectorPrefix20211102\Nette\Neon\Node $node) : \RectorPrefix20211102\Nette\Neon\Node
{
foreach ($this->neonRectors as $neonRector) {
// is service node?
// iterate single service
$serviceType = $this->serviceTypeResolver->resolve($node);
// create virtual node
if (\is_string($serviceType)) {
$service = $this->serviceFactory->create($node);
if ($service instanceof \Rector\Nette\NeonParser\Node\Service_) {
// enter meta node
$node = $service;
}
}
// enter node only in case of matching type
if (\is_a($node, $neonRector->getNodeType(), \true)) {
$neonRector->enterNode($node);
}
// traverse all children
foreach ($node->getSubNodes() as $subnode) {
$this->traverse($subnode);
}
}
return $node;
}
}

View File

@ -0,0 +1,27 @@
<?php
declare (strict_types=1);
namespace Rector\Nette\NeonParser;
use Rector\Nette\NeonParser\NodeFactory\ServiceFactory;
use Rector\Nette\NeonParser\Services\ServiceTypeResolver;
final class NeonNodeTraverserFactory
{
/**
* @var \Rector\Nette\NeonParser\Services\ServiceTypeResolver
*/
private $serviceTypeResolver;
/**
* @var \Rector\Nette\NeonParser\NodeFactory\ServiceFactory
*/
private $serviceFactory;
public function __construct(\Rector\Nette\NeonParser\Services\ServiceTypeResolver $serviceTypeResolver, \Rector\Nette\NeonParser\NodeFactory\ServiceFactory $serviceFactory)
{
$this->serviceTypeResolver = $serviceTypeResolver;
$this->serviceFactory = $serviceFactory;
}
public function create() : \Rector\Nette\NeonParser\NeonNodeTraverser
{
return new \Rector\Nette\NeonParser\NeonNodeTraverser($this->serviceTypeResolver, $this->serviceFactory);
}
}

View File

@ -0,0 +1,9 @@
<?php
declare (strict_types=1);
namespace Rector\Nette\NeonParser\NeonNodeVisitor;
use Rector\Nette\NeonParser\Contract\NeonNodeVisitorInterface;
abstract class AbstractServiceNeonNodeVisitor implements \Rector\Nette\NeonParser\Contract\NeonNodeVisitorInterface
{
}

View File

@ -0,0 +1,22 @@
<?php
declare (strict_types=1);
namespace Rector\Nette\NeonParser;
use RectorPrefix20211102\Nette\Neon\Decoder;
use RectorPrefix20211102\Nette\Neon\Node;
final class NeonParser
{
/**
* @var \Nette\Neon\Decoder
*/
private $decoder;
public function __construct(\RectorPrefix20211102\Nette\Neon\Decoder $decoder)
{
$this->decoder = $decoder;
}
public function parseString(string $neonContent) : \RectorPrefix20211102\Nette\Neon\Node
{
return $this->decoder->parseToNode($neonContent);
}
}

View File

@ -0,0 +1,23 @@
<?php
declare (strict_types=1);
namespace Rector\Nette\NeonParser\Node;
use RectorPrefix20211102\Nette\Neon\Node;
use Rector\Nette\NeonParser\Exception\UnusedVirtualMethodException;
abstract class AbstractVirtualNode extends \RectorPrefix20211102\Nette\Neon\Node
{
/**
* @return mixed
*/
public function toValue()
{
// never used, just to make parent contract happy
throw new \Rector\Nette\NeonParser\Exception\UnusedVirtualMethodException();
}
public function toString() : string
{
// never used, just to make parent contract happy
throw new \Rector\Nette\NeonParser\Exception\UnusedVirtualMethodException();
}
}

View File

@ -0,0 +1,74 @@
<?php
declare (strict_types=1);
namespace Rector\Nette\NeonParser\Node;
use RectorPrefix20211102\Nette\Neon\Node;
use RectorPrefix20211102\Nette\Neon\Node\LiteralNode;
use Rector\Nette\NeonParser\Node\Service_\SetupMethodCall;
/**
* Metanode for easier subscribing
*/
final class Service_ extends \Rector\Nette\NeonParser\Node\AbstractVirtualNode
{
/**
* @var string
*/
private const UNKNOWN_TYPE = '__UNKNOWN_TYPE__';
/**
* @var string
*/
private $className;
/**
* @var \Nette\Neon\Node\LiteralNode|null
*/
private $classLiteralNode;
/**
* @var \Nette\Neon\Node\LiteralNode|null
*/
private $factoryLiteralNode;
/**
* @var \Rector\Nette\NeonParser\Node\Service_\SetupMethodCall[]
*/
private $setupMethodCalls;
/**
* @param SetupMethodCall[] $setupMethodCalls
* @param \Nette\Neon\Node\LiteralNode|null $classLiteralNode
* @param \Nette\Neon\Node\LiteralNode|null $factoryLiteralNode
*/
public function __construct(string $className, $classLiteralNode, $factoryLiteralNode, array $setupMethodCalls)
{
$this->className = $className;
$this->classLiteralNode = $classLiteralNode;
$this->factoryLiteralNode = $factoryLiteralNode;
$this->setupMethodCalls = $setupMethodCalls;
}
public function getClassName() : string
{
return $this->className;
}
public function getServiceType() : string
{
if ($this->classLiteralNode) {
return $this->classLiteralNode->toString();
}
if ($this->factoryLiteralNode) {
return $this->factoryLiteralNode->toString();
}
return self::UNKNOWN_TYPE;
}
/**
* @return Node[]
*/
public function getSubNodes() : array
{
$subNodes = [];
if ($this->classLiteralNode instanceof \RectorPrefix20211102\Nette\Neon\Node\LiteralNode) {
$subNodes[] = $this->classLiteralNode;
}
if ($this->factoryLiteralNode instanceof \RectorPrefix20211102\Nette\Neon\Node\LiteralNode) {
$subNodes[] = $this->factoryLiteralNode;
}
return \array_merge($subNodes, $this->setupMethodCalls);
}
}

View File

@ -0,0 +1,33 @@
<?php
declare (strict_types=1);
namespace Rector\Nette\NeonParser\Node\Service_;
use RectorPrefix20211102\Nette\Neon\Node\EntityNode;
use RectorPrefix20211102\Nette\Neon\Node\LiteralNode;
use Rector\Nette\NeonParser\Node\AbstractVirtualNode;
final class SetupMethodCall extends \Rector\Nette\NeonParser\Node\AbstractVirtualNode
{
/**
* @var string
*/
public $className;
/**
* @var \Nette\Neon\Node\LiteralNode
*/
public $methodNameLiteralNode;
/**
* @var \Nette\Neon\Node\EntityNode
*/
public $entityNode;
public function __construct(string $className, \RectorPrefix20211102\Nette\Neon\Node\LiteralNode $methodNameLiteralNode, \RectorPrefix20211102\Nette\Neon\Node\EntityNode $entityNode)
{
$this->className = $className;
$this->methodNameLiteralNode = $methodNameLiteralNode;
$this->entityNode = $entityNode;
}
public function getMethodName() : string
{
return $this->methodNameLiteralNode->toValue();
}
}

View File

@ -0,0 +1,122 @@
<?php
declare (strict_types=1);
namespace Rector\Nette\NeonParser\NodeFactory;
use RectorPrefix20211102\Nette\Neon\Node\ArrayItemNode;
use RectorPrefix20211102\Nette\Neon\Node\ArrayNode;
use RectorPrefix20211102\Nette\Neon\Node\EntityNode;
use RectorPrefix20211102\Nette\Neon\Node\LiteralNode;
use Rector\Nette\Exception\NeonShouldNotHappenException;
use Rector\Nette\NeonParser\Exception\NotImplementedYetException;
use Rector\Nette\NeonParser\Node\Service_;
use RectorPrefix20211102\Nette\Neon\Node;
use Rector\Nette\NeonParser\Node\Service_\SetupMethodCall;
final class ServiceFactory
{
/**
* @var string
*/
private const CLASS_KEYWORD = 'class';
/**
* @var string
*/
private const SETUP_KEYWORD = 'setup';
/**
* @var string
*/
private const FACTORY_KEYWORD = 'factory';
/**
* @return \Rector\Nette\NeonParser\Node\Service_|null
*/
public function create(\RectorPrefix20211102\Nette\Neon\Node $node)
{
if (!$node instanceof \RectorPrefix20211102\Nette\Neon\Node\ArrayItemNode) {
return null;
}
$class = $this->resolveArrayItemByKeyword($node, self::CLASS_KEYWORD);
$factory = $this->resolveArrayItemByKeyword($node, self::FACTORY_KEYWORD);
$className = $this->resolveServiceName($class, $factory);
// resolve later
if (!\is_string($className)) {
return null;
}
$setupMethodCalls = $this->resolveSetupMethodCalls($className, $node);
return new \Rector\Nette\NeonParser\Node\Service_($className, $class, $factory, $setupMethodCalls);
}
/**
* @return \Nette\Neon\Node\LiteralNode|null
*/
private function resolveArrayItemByKeyword(\RectorPrefix20211102\Nette\Neon\Node\ArrayItemNode $arrayItemNode, string $keyword)
{
if (!$arrayItemNode->value instanceof \RectorPrefix20211102\Nette\Neon\Node\ArrayNode) {
return null;
}
$arrayNode = $arrayItemNode->value;
foreach ($arrayNode->items as $arrayItemNode) {
if (!$arrayItemNode->key instanceof \RectorPrefix20211102\Nette\Neon\Node\LiteralNode) {
continue;
}
if ($arrayItemNode->key->toString() !== $keyword) {
continue;
}
if ($arrayItemNode->value instanceof \RectorPrefix20211102\Nette\Neon\Node\EntityNode) {
return $arrayItemNode->value->value;
}
if ($arrayItemNode->value instanceof \RectorPrefix20211102\Nette\Neon\Node\LiteralNode) {
return $arrayItemNode->value;
}
}
return null;
}
/**
* @return SetupMethodCall[]
*/
private function resolveSetupMethodCalls(string $className, \RectorPrefix20211102\Nette\Neon\Node\ArrayItemNode $arrayItemNode) : array
{
if (!$arrayItemNode->value instanceof \RectorPrefix20211102\Nette\Neon\Node\ArrayNode) {
return [];
}
$setupMethodCalls = [];
$arrayNode = $arrayItemNode->value;
foreach ($arrayNode->items as $arrayItemNode) {
if ($arrayItemNode->key instanceof \RectorPrefix20211102\Nette\Neon\Node\LiteralNode) {
if ($arrayItemNode->key->toString() !== self::SETUP_KEYWORD) {
continue;
}
if (!$arrayItemNode->value instanceof \RectorPrefix20211102\Nette\Neon\Node\ArrayNode) {
continue;
}
foreach ($arrayItemNode->value->items as $setupArrayItemNode) {
if ($setupArrayItemNode->value instanceof \RectorPrefix20211102\Nette\Neon\Node\EntityNode) {
// probably method call
$entityNode = $setupArrayItemNode->value;
if ($entityNode->value instanceof \RectorPrefix20211102\Nette\Neon\Node\LiteralNode) {
// not a method call - probably property assign
if (\strncmp($entityNode->value->toString(), '$', \strlen('$')) === 0) {
continue;
}
$setupMethodCalls[] = new \Rector\Nette\NeonParser\Node\Service_\SetupMethodCall($className, $entityNode->value, $entityNode);
}
}
}
}
}
return $setupMethodCalls;
}
/**
* @param \Nette\Neon\Node\LiteralNode|null $classLiteralNode
* @param \Nette\Neon\Node\LiteralNode|null $factoryLiteralNode
* @return string|null
*/
private function resolveServiceName($classLiteralNode, $factoryLiteralNode)
{
if ($classLiteralNode) {
return $classLiteralNode->toString();
}
if ($factoryLiteralNode) {
return $factoryLiteralNode->toString();
}
return null;
}
}

View File

@ -0,0 +1,44 @@
<?php
declare (strict_types=1);
namespace Rector\Nette\NeonParser\Printer;
use RectorPrefix20211102\Nette\Neon\Node;
use RectorPrefix20211102\Nette\Utils\Strings;
final class FormatPreservingNeonPrinter
{
/**
* @var string
*/
private const INDENT_TABS = 'tabs';
/**
* @var string
*/
private const INDENT_SPACES = 'spaces';
public function printNode(\RectorPrefix20211102\Nette\Neon\Node $node, string $originalContenet) : string
{
$neonContent = $node->toString();
$indentType = $this->resolveIndentType($originalContenet);
$neonContent = $this->formatIndent($neonContent, $indentType);
// replace quotes - @todo resolve defaults
return \RectorPrefix20211102\Nette\Utils\Strings::replace($neonContent, '#\\"#', '\'');
}
/**
* Some files prefer tabs, some spaces. This will resolve first found space.
*/
private function resolveIndentType(string $neonContent) : string
{
$indentMatch = \RectorPrefix20211102\Nette\Utils\Strings::match($neonContent, '#(\\t| )#ms');
if ($indentMatch[0] === "\t") {
return self::INDENT_TABS;
}
return self::INDENT_SPACES;
}
private function formatIndent(string $neonContent, string $indentType) : string
{
if ($indentType === self::INDENT_SPACES) {
return \RectorPrefix20211102\Nette\Utils\Strings::replace($neonContent, '#\\t#', ' ');
}
return $neonContent;
}
}

View File

@ -0,0 +1,50 @@
<?php
declare (strict_types=1);
namespace Rector\Nette\NeonParser\Services;
use RectorPrefix20211102\Nette\Neon\Node;
use RectorPrefix20211102\Nette\Neon\Node\ArrayItemNode;
use RectorPrefix20211102\Nette\Neon\Node\ArrayNode;
use RectorPrefix20211102\Nette\Neon\Node\EntityNode;
final class ServiceTypeResolver
{
/**
* @var string
*/
private const FACTORY_KEYWORD = 'factory';
/**
* @var string
*/
private const CLASS_KEYWORD = 'class';
/**
* @return string|null
*/
public function resolve(\RectorPrefix20211102\Nette\Neon\Node $serviceNode)
{
if (!$serviceNode instanceof \RectorPrefix20211102\Nette\Neon\Node\ArrayItemNode) {
return null;
}
if (!$serviceNode->value instanceof \RectorPrefix20211102\Nette\Neon\Node\ArrayNode) {
return null;
}
foreach ($serviceNode->value->items as $serviceConfigurationItem) {
if ($serviceConfigurationItem->key === null) {
continue;
}
if ($serviceConfigurationItem->key->toString() === self::FACTORY_KEYWORD) {
if ($serviceConfigurationItem->value instanceof \RectorPrefix20211102\Nette\Neon\Node\EntityNode) {
return $serviceConfigurationItem->value->value->toString();
}
return $serviceConfigurationItem->value->toString();
}
if ($serviceConfigurationItem->key->toString() === self::CLASS_KEYWORD) {
if ($serviceConfigurationItem->value instanceof \RectorPrefix20211102\Nette\Neon\Node\EntityNode) {
return $serviceConfigurationItem->value->value->toString();
}
return $serviceConfigurationItem->value->toString();
}
}
return null;
}
}

View File

@ -4,8 +4,8 @@ declare (strict_types=1);
namespace RectorPrefix20211102; namespace RectorPrefix20211102;
use Rector\Core\Configuration\Option; use Rector\Core\Configuration\Option;
use Rector\Nette\NodeAnalyzer\BinaryOpAnalyzer; use Rector\Php55\Rector\String_\StringClassNameToClassConstantRector;
use Rector\PHPUnit\NodeAnalyzer\TestsNodeAnalyzer; use Rector\Set\ValueObject\LevelSetList;
use Rector\Set\ValueObject\SetList; use Rector\Set\ValueObject\SetList;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator; use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
return static function (\Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator $containerConfigurator) : void { return static function (\Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator $containerConfigurator) : void {
@ -17,10 +17,10 @@ return static function (\Symfony\Component\DependencyInjection\Loader\Configurat
'*/Source/*', '*/Source/*',
'*/Fixture/*', '*/Fixture/*',
]); ]);
$services = $containerConfigurator->services();
$services->set(\Rector\Php55\Rector\String_\StringClassNameToClassConstantRector::class)->call('configure', [[\Rector\Php55\Rector\String_\StringClassNameToClassConstantRector::CLASSES_TO_SKIP => ['Nette\\*', 'Symfony\\Component\\Translation\\TranslatorInterface', 'Symfony\\Contracts\\EventDispatcher\\Event', 'Kdyby\\Events\\Subscriber']]]);
// needed for DEAD_CODE list, just in split package like this // needed for DEAD_CODE list, just in split package like this
$containerConfigurator->import(__DIR__ . '/config/config.php'); $containerConfigurator->import(__DIR__ . '/config/config.php');
$containerConfigurator->import(\Rector\Set\ValueObject\SetList::PHP_80); $containerConfigurator->import(\Rector\Set\ValueObject\LevelSetList::UP_TO_PHP_80);
$containerConfigurator->import(\Rector\Set\ValueObject\SetList::PHP_74);
$containerConfigurator->import(\Rector\Set\ValueObject\SetList::PHP_73);
$containerConfigurator->import(\Rector\Set\ValueObject\SetList::DEAD_CODE); $containerConfigurator->import(\Rector\Set\ValueObject\SetList::DEAD_CODE);
}; };

View File

@ -3,8 +3,16 @@
declare (strict_types=1); declare (strict_types=1);
namespace Rector\Nette\Contract\Rector; namespace Rector\Nette\Contract\Rector;
use RectorPrefix20211102\Nette\Neon\Node;
use Rector\Core\Contract\Rector\RectorInterface; use Rector\Core\Contract\Rector\RectorInterface;
interface NeonRectorInterface extends \Rector\Core\Contract\Rector\RectorInterface interface NeonRectorInterface extends \Rector\Core\Contract\Rector\RectorInterface
{ {
public function changeContent(string $content) : string; /**
* @return class-string<Node>
*/
public function getNodeType() : string;
/**
* @return \Nette\Neon\Node|null
*/
public function enterNode(\RectorPrefix20211102\Nette\Neon\Node $node);
} }

View File

@ -7,8 +7,23 @@ use Rector\Core\Contract\Processor\FileProcessorInterface;
use Rector\Core\ValueObject\Application\File; use Rector\Core\ValueObject\Application\File;
use Rector\Core\ValueObject\Configuration; use Rector\Core\ValueObject\Configuration;
use Rector\Nette\Contract\Rector\NeonRectorInterface; use Rector\Nette\Contract\Rector\NeonRectorInterface;
use Rector\Nette\NeonParser\NeonNodeTraverserFactory;
use Rector\Nette\NeonParser\NeonParser;
use Rector\Nette\NeonParser\Printer\FormatPreservingNeonPrinter;
final class NeonFileProcessor implements \Rector\Core\Contract\Processor\FileProcessorInterface final class NeonFileProcessor implements \Rector\Core\Contract\Processor\FileProcessorInterface
{ {
/**
* @var \Rector\Nette\NeonParser\NeonParser
*/
private $neonParser;
/**
* @var \Rector\Nette\NeonParser\NeonNodeTraverserFactory
*/
private $neonNodeTraverserFactory;
/**
* @var \Rector\Nette\NeonParser\Printer\FormatPreservingNeonPrinter
*/
private $formatPreservingNeonPrinter;
/** /**
* @var \Rector\Nette\Contract\Rector\NeonRectorInterface[] * @var \Rector\Nette\Contract\Rector\NeonRectorInterface[]
*/ */
@ -16,8 +31,11 @@ final class NeonFileProcessor implements \Rector\Core\Contract\Processor\FilePro
/** /**
* @param NeonRectorInterface[] $neonRectors * @param NeonRectorInterface[] $neonRectors
*/ */
public function __construct(array $neonRectors) public function __construct(\Rector\Nette\NeonParser\NeonParser $neonParser, \Rector\Nette\NeonParser\NeonNodeTraverserFactory $neonNodeTraverserFactory, \Rector\Nette\NeonParser\Printer\FormatPreservingNeonPrinter $formatPreservingNeonPrinter, array $neonRectors)
{ {
$this->neonParser = $neonParser;
$this->neonNodeTraverserFactory = $neonNodeTraverserFactory;
$this->formatPreservingNeonPrinter = $formatPreservingNeonPrinter;
$this->neonRectors = $neonRectors; $this->neonRectors = $neonRectors;
} }
/** /**
@ -27,10 +45,19 @@ final class NeonFileProcessor implements \Rector\Core\Contract\Processor\FilePro
public function process($file, $configuration) : void public function process($file, $configuration) : void
{ {
$fileContent = $file->getFileContent(); $fileContent = $file->getFileContent();
$neonNode = $this->neonParser->parseString($fileContent);
$neonNodeTraverser = $this->neonNodeTraverserFactory->create();
foreach ($this->neonRectors as $neonRector) { foreach ($this->neonRectors as $neonRector) {
$fileContent = $neonRector->changeContent($fileContent); $neonNodeTraverser->addNeonNodeVisitor($neonRector);
} }
$file->changeFileContent($fileContent); $originalPrintedContent = $this->formatPreservingNeonPrinter->printNode($neonNode, $fileContent);
$neonNode = $neonNodeTraverser->traverse($neonNode);
$changedFileContent = $this->formatPreservingNeonPrinter->printNode($neonNode, $fileContent);
// has node changed?
if ($changedFileContent === $originalPrintedContent) {
return;
}
$file->changeFileContent($changedFileContent);
} }
/** /**
* @param \Rector\Core\ValueObject\Application\File $file * @param \Rector\Core\ValueObject\Application\File $file

View File

@ -6,6 +6,7 @@ namespace Rector\Nette\FormControlTypeResolver;
use PhpParser\Node; use PhpParser\Node;
use PhpParser\Node\Expr\MethodCall; use PhpParser\Node\Expr\MethodCall;
use PHPStan\Type\TypeWithClassName; use PHPStan\Type\TypeWithClassName;
use Rector\Core\Exception\ShouldNotHappenException;
use Rector\Core\PhpParser\AstResolver; use Rector\Core\PhpParser\AstResolver;
use Rector\Core\PhpParser\Node\Value\ValueResolver; use Rector\Core\PhpParser\Node\Value\ValueResolver;
use Rector\Core\ValueObject\MethodName; use Rector\Core\ValueObject\MethodName;
@ -87,6 +88,10 @@ final class GetComponentMethodCallFormControlTypeResolver implements \Rector\Net
private function createCreateComponentMethodName(\PhpParser\Node\Expr\MethodCall $methodCall) : string private function createCreateComponentMethodName(\PhpParser\Node\Expr\MethodCall $methodCall) : string
{ {
$firstArgumentValue = $methodCall->args[0]->value; $firstArgumentValue = $methodCall->args[0]->value;
return 'createComponent' . \ucfirst($this->valueResolver->getValue($firstArgumentValue)); $componentName = $this->valueResolver->getValue($firstArgumentValue);
if (!\is_string($componentName)) {
throw new \Rector\Core\Exception\ShouldNotHappenException();
}
return 'createComponent' . \ucfirst($componentName);
} }
} }

View File

@ -10,6 +10,7 @@ use Rector\Core\Exception\ShouldNotHappenException;
use Rector\Naming\Naming\VariableNaming; use Rector\Naming\Naming\VariableNaming;
use Rector\Nette\Kdyby\ValueObject\VariableWithType; use Rector\Nette\Kdyby\ValueObject\VariableWithType;
use Rector\NodeTypeResolver\NodeTypeResolver; use Rector\NodeTypeResolver\NodeTypeResolver;
use Rector\PHPStanStaticTypeMapper\Enum\TypeKind;
use Rector\StaticTypeMapper\StaticTypeMapper; use Rector\StaticTypeMapper\StaticTypeMapper;
final class VariableWithTypesFactory final class VariableWithTypesFactory
{ {

View File

@ -8,6 +8,7 @@ use PhpParser\Node\Expr;
use PhpParser\Node\Expr\ArrayItem; use PhpParser\Node\Expr\ArrayItem;
use PhpParser\Node\Stmt\Class_; use PhpParser\Node\Stmt\Class_;
use PhpParser\Node\Stmt\ClassMethod; use PhpParser\Node\Stmt\ClassMethod;
use Rector\Core\Exception\ShouldNotHappenException;
use Rector\Core\PhpParser\Node\Value\ValueResolver; use Rector\Core\PhpParser\Node\Value\ValueResolver;
use Rector\Nette\Kdyby\Naming\EventClassNaming; use Rector\Nette\Kdyby\Naming\EventClassNaming;
use Rector\Nette\Kdyby\ValueObject\EventClassAndClassMethod; use Rector\Nette\Kdyby\ValueObject\EventClassAndClassMethod;
@ -66,6 +67,9 @@ final class ListeningMethodsCollector
return; return;
} }
$eventClass = $this->valueResolver->getValue($node->key); $eventClass = $this->valueResolver->getValue($node->key);
if (!\is_string($eventClass)) {
throw new \Rector\Core\Exception\ShouldNotHappenException();
}
if ($type === self::EVENT_TYPE_CONTRIBUTTE) { if ($type === self::EVENT_TYPE_CONTRIBUTTE) {
/** @var string $eventClass */ /** @var string $eventClass */
$this->resolveContributeEventClassAndSubscribedClassMethod($eventClass, $classMethod); $this->resolveContributeEventClassAndSubscribedClassMethod($eventClass, $classMethod);
@ -117,6 +121,9 @@ final class ListeningMethodsCollector
{ {
// custom method name // custom method name
$classMethodName = $this->valueResolver->getValue($arrayItem->value); $classMethodName = $this->valueResolver->getValue($arrayItem->value);
if (!\is_string($classMethodName)) {
throw new \Rector\Core\Exception\ShouldNotHappenException();
}
$classMethod = $class->getMethod($classMethodName); $classMethod = $class->getMethod($classMethodName);
if (\strpos($eventClass, '::') !== \false) { if (\strpos($eventClass, '::') !== \false) {
[$dispatchingClass, $property] = \explode('::', $eventClass); [$dispatchingClass, $property] = \explode('::', $eventClass);

View File

@ -11,6 +11,7 @@ use PhpParser\Node\Scalar\String_;
use PhpParser\Node\Stmt\ClassMethod; use PhpParser\Node\Stmt\ClassMethod;
use PhpParser\Node\Stmt\Return_; use PhpParser\Node\Stmt\Return_;
use Rector\Core\Exception\NotImplementedYetException; use Rector\Core\Exception\NotImplementedYetException;
use Rector\Core\Exception\ShouldNotHappenException;
use Rector\Core\Rector\AbstractRector; use Rector\Core\Rector\AbstractRector;
use Rector\Nette\Kdyby\NodeAnalyzer\GetSubscribedEventsClassMethodAnalyzer; use Rector\Nette\Kdyby\NodeAnalyzer\GetSubscribedEventsClassMethodAnalyzer;
use Rector\Nette\Kdyby\NodeManipulator\GetSubscribedEventsArrayManipulator; use Rector\Nette\Kdyby\NodeManipulator\GetSubscribedEventsArrayManipulator;
@ -148,6 +149,9 @@ CODE_SAMPLE
private function resolveMethodNameFromKdybyEventName(\PhpParser\Node\Expr $expr) : string private function resolveMethodNameFromKdybyEventName(\PhpParser\Node\Expr $expr) : string
{ {
$kdybyEventName = $this->valueResolver->getValue($expr); $kdybyEventName = $this->valueResolver->getValue($expr);
if (!\is_string($kdybyEventName)) {
throw new \Rector\Core\Exception\ShouldNotHappenException();
}
if (\strpos($kdybyEventName, '::') !== \false) { if (\strpos($kdybyEventName, '::') !== \false) {
return (string) \RectorPrefix20211102\Nette\Utils\Strings::after($kdybyEventName, '::', -1); return (string) \RectorPrefix20211102\Nette\Utils\Strings::after($kdybyEventName, '::', -1);
} }

View File

@ -104,6 +104,9 @@ CODE_SAMPLE
$node->args = []; $node->args = [];
$eventReference = $oldArgs[0]->value; $eventReference = $oldArgs[0]->value;
$classAndStaticProperty = $this->valueResolver->getValue($eventReference, \true); $classAndStaticProperty = $this->valueResolver->getValue($eventReference, \true);
if (!\is_string($classAndStaticProperty)) {
return null;
}
$eventClassName = $this->eventClassNaming->createEventClassNameFromClassPropertyReference($classAndStaticProperty); $eventClassName = $this->eventClassNaming->createEventClassNameFromClassPropertyReference($classAndStaticProperty);
$args = $this->createNewArgs($oldArgs); $args = $this->createNewArgs($oldArgs);
$new = new \PhpParser\Node\Expr\New_(new \PhpParser\Node\Name\FullyQualified($eventClassName), $args); $new = new \PhpParser\Node\Expr\New_(new \PhpParser\Node\Name\FullyQualified($eventClassName), $args);

View File

@ -45,6 +45,9 @@ final class FunctionLikeFirstLevelStatementResolver
throw new \Rector\Core\Exception\ShouldNotHappenException(); throw new \Rector\Core\Exception\ShouldNotHappenException();
} }
$currentStatement = $parent->getAttribute(\Rector\NodeTypeResolver\Node\AttributeKey::CURRENT_STATEMENT); $currentStatement = $parent->getAttribute(\Rector\NodeTypeResolver\Node\AttributeKey::CURRENT_STATEMENT);
if (!$currentStatement instanceof \PhpParser\Node) {
throw new \Rector\Core\Exception\ShouldNotHappenException();
}
} }
return $currentStatement; return $currentStatement;
} }

View File

@ -192,6 +192,9 @@ CODE_SAMPLE
private function resolveTypeFromShortControlNameAndVariable(\PhpParser\Node\Scalar\String_ $shortControlString, \PHPStan\Analyser\Scope $scope, \PhpParser\Node\Expr $expr) : \PHPStan\Type\Type private function resolveTypeFromShortControlNameAndVariable(\PhpParser\Node\Scalar\String_ $shortControlString, \PHPStan\Analyser\Scope $scope, \PhpParser\Node\Expr $expr) : \PHPStan\Type\Type
{ {
$componentName = $this->valueResolver->getValue($shortControlString); $componentName = $this->valueResolver->getValue($shortControlString);
if (!\is_string($componentName)) {
throw new \Rector\Core\Exception\ShouldNotHappenException();
}
$componentName = \ucfirst($componentName); $componentName = \ucfirst($componentName);
$methodName = \sprintf('createComponent%s', $componentName); $methodName = \sprintf('createComponent%s', $componentName);
$calledOnType = $scope->getType($expr); $calledOnType = $scope->getType($expr);

View File

@ -113,6 +113,9 @@ CODE_SAMPLE
$assign = $this->createCoalesceAssign($node); $assign = $this->createCoalesceAssign($node);
$currentStmt = $node->getAttribute(\Rector\NodeTypeResolver\Node\AttributeKey::CURRENT_STATEMENT); $currentStmt = $node->getAttribute(\Rector\NodeTypeResolver\Node\AttributeKey::CURRENT_STATEMENT);
$positionNode = $currentStmt ?? $node; $positionNode = $currentStmt ?? $node;
if (!$positionNode instanceof \PhpParser\Node) {
throw new \Rector\Core\Exception\ShouldNotHappenException();
}
$this->nodesToAddCollector->addNodeBeforeNode($assign, $positionNode); $this->nodesToAddCollector->addNodeBeforeNode($assign, $positionNode);
return \PhpParser\NodeTraverser::STOP_TRAVERSAL; return \PhpParser\NodeTraverser::STOP_TRAVERSAL;
}); });

View File

@ -8,6 +8,7 @@ use PhpParser\Node\Stmt\Class_;
use PhpParser\Node\Stmt\ClassMethod; use PhpParser\Node\Stmt\ClassMethod;
use PhpParser\Node\Stmt\Property; use PhpParser\Node\Stmt\Property;
use Rector\BetterPhpDocParser\PhpDocManipulator\PhpDocTagRemover; use Rector\BetterPhpDocParser\PhpDocManipulator\PhpDocTagRemover;
use Rector\Core\Exception\ShouldNotHappenException;
use Rector\Core\Rector\AbstractRector; use Rector\Core\Rector\AbstractRector;
use Rector\Core\ValueObject\MethodName; use Rector\Core\ValueObject\MethodName;
use Rector\Core\ValueObject\PhpVersionFeature; use Rector\Core\ValueObject\PhpVersionFeature;
@ -105,6 +106,9 @@ CODE_SAMPLE
return null; return null;
} }
$class = $node->getAttribute(\Rector\NodeTypeResolver\Node\AttributeKey::CLASS_NODE); $class = $node->getAttribute(\Rector\NodeTypeResolver\Node\AttributeKey::CLASS_NODE);
if (!$class instanceof \PhpParser\Node\Stmt\Class_) {
throw new \Rector\Core\Exception\ShouldNotHappenException();
}
foreach ($injectProperties as $injectProperty) { foreach ($injectProperties as $injectProperty) {
$this->removeInjectAnnotation($injectProperty); $this->removeInjectAnnotation($injectProperty);
$this->changePropertyVisibility($injectProperty); $this->changePropertyVisibility($injectProperty);

View File

@ -102,15 +102,20 @@ CODE_SAMPLE
{ {
return [\PhpParser\Node\Stmt\Class_::class]; return [\PhpParser\Node\Stmt\Class_::class];
} }
/**
* @param array<string, string|string[]> $configuration
*/
public function configure(array $configuration) : void public function configure(array $configuration) : void
{ {
if (isset($configuration[self::TEMPLATE_CLASS_PARENT])) { if (isset($configuration[self::TEMPLATE_CLASS_PARENT])) {
\RectorPrefix20211102\Webmozart\Assert\Assert::string($configuration[self::TEMPLATE_CLASS_PARENT]); $templateClassParent = $configuration[self::TEMPLATE_CLASS_PARENT];
$this->templateClassParent = $configuration[self::TEMPLATE_CLASS_PARENT]; \RectorPrefix20211102\Webmozart\Assert\Assert::string($templateClassParent);
$this->templateClassParent = $templateClassParent;
} }
if (isset($configuration[self::TEMPLATE_CLASS_TRAITS])) { if (isset($configuration[self::TEMPLATE_CLASS_TRAITS])) {
\RectorPrefix20211102\Webmozart\Assert\Assert::isArray($configuration[self::TEMPLATE_CLASS_TRAITS]); $templateClassTraits = $configuration[self::TEMPLATE_CLASS_TRAITS];
$this->templateClassTraits = $configuration[self::TEMPLATE_CLASS_TRAITS]; \RectorPrefix20211102\Webmozart\Assert\Assert::isArray($templateClassTraits);
$this->templateClassTraits = $templateClassTraits;
} }
} }
/** /**

View File

@ -83,11 +83,14 @@ CODE_SAMPLE
} }
public function refactorIdentical(\PhpParser\Node\Expr\BinaryOp\Identical $identical) : ?\PhpParser\Node\Expr\Cast\Bool_ public function refactorIdentical(\PhpParser\Node\Expr\BinaryOp\Identical $identical) : ?\PhpParser\Node\Expr\Cast\Bool_
{ {
$parentNode = $identical->getAttribute(\Rector\NodeTypeResolver\Node\AttributeKey::PARENT_NODE); $parent = $identical->getAttribute(\Rector\NodeTypeResolver\Node\AttributeKey::PARENT_NODE);
if (!$parent instanceof \PhpParser\Node) {
return null;
}
if ($identical->left instanceof \PhpParser\Node\Expr\FuncCall) { if ($identical->left instanceof \PhpParser\Node\Expr\FuncCall) {
$refactoredFuncCall = $this->refactorFuncCall($identical->left); $refactoredFuncCall = $this->refactorFuncCall($identical->left);
if ($refactoredFuncCall !== null && $this->valueResolver->isValue($identical->right, 1)) { if ($refactoredFuncCall !== null && $this->valueResolver->isValue($identical->right, 1)) {
return $this->createBoolCast($parentNode, $refactoredFuncCall); return $this->createBoolCast($parent, $refactoredFuncCall);
} }
} }
if ($identical->right instanceof \PhpParser\Node\Expr\FuncCall) { if ($identical->right instanceof \PhpParser\Node\Expr\FuncCall) {

View File

@ -82,17 +82,20 @@ CODE_SAMPLE
} }
public function refactorIdentical(\PhpParser\Node\Expr\BinaryOp\Identical $identical) : ?\PhpParser\Node\Expr\Cast\Bool_ public function refactorIdentical(\PhpParser\Node\Expr\BinaryOp\Identical $identical) : ?\PhpParser\Node\Expr\Cast\Bool_
{ {
$parentNode = $identical->getAttribute(\Rector\NodeTypeResolver\Node\AttributeKey::PARENT_NODE); $parent = $identical->getAttribute(\Rector\NodeTypeResolver\Node\AttributeKey::PARENT_NODE);
if (!$parent instanceof \PhpParser\Node) {
return null;
}
if ($identical->left instanceof \PhpParser\Node\Expr\FuncCall) { if ($identical->left instanceof \PhpParser\Node\Expr\FuncCall) {
$refactoredFuncCall = $this->refactorFuncCall($identical->left); $refactoredFuncCall = $this->refactorFuncCall($identical->left);
if ($refactoredFuncCall !== null && $this->valueResolver->isValue($identical->right, 1)) { if ($refactoredFuncCall !== null && $this->valueResolver->isValue($identical->right, 1)) {
return $this->createBoolCast($parentNode, $refactoredFuncCall); return $this->createBoolCast($parent, $refactoredFuncCall);
} }
} }
if ($identical->right instanceof \PhpParser\Node\Expr\FuncCall) { if ($identical->right instanceof \PhpParser\Node\Expr\FuncCall) {
$refactoredFuncCall = $this->refactorFuncCall($identical->right); $refactoredFuncCall = $this->refactorFuncCall($identical->right);
if ($refactoredFuncCall !== null && $this->valueResolver->isValue($identical->left, 1)) { if ($refactoredFuncCall !== null && $this->valueResolver->isValue($identical->left, 1)) {
return $this->createBoolCast($parentNode, $refactoredFuncCall); return $this->createBoolCast($parent, $refactoredFuncCall);
} }
} }
return null; return null;

View File

@ -50,8 +50,7 @@ CODE_SAMPLE
{ {
$typesToVariables = $this->findTypesForVariables($content); $typesToVariables = $this->findTypesForVariables($content);
foreach ($this->methodCallRenameCollector->getMethodCallRenames() as $methodCallRename) { foreach ($this->methodCallRenameCollector->getMethodCallRenames() as $methodCallRename) {
$oldObjectType = $methodCallRename->getOldObjectType(); $className = $methodCallRename->getClass();
$className = $oldObjectType->getClassName();
if (!isset($typesToVariables[$className])) { if (!isset($typesToVariables[$className])) {
continue; continue;
} }

View File

@ -103,7 +103,7 @@ CODE_SAMPLE
} }
$arrayDimFetch = new \PhpParser\Node\Expr\ArrayDimFetch($methodCall->var, $key); $arrayDimFetch = new \PhpParser\Node\Expr\ArrayDimFetch($methodCall->var, $key);
$formAssign = new \PhpParser\Node\Expr\Assign($arrayDimFetch, $new); $formAssign = new \PhpParser\Node\Expr\Assign($arrayDimFetch, $new);
if ($parent !== null) { if ($parent instanceof \PhpParser\Node) {
$methodCalls = $this->betterNodeFinder->findInstanceOf($parent, \PhpParser\Node\Expr\MethodCall::class); $methodCalls = $this->betterNodeFinder->findInstanceOf($parent, \PhpParser\Node\Expr\MethodCall::class);
if (\count($methodCalls) > 1) { if (\count($methodCalls) > 1) {
$controlName = $this->resolveControlName($methodCall); $controlName = $this->resolveControlName($methodCall);

View File

@ -3,8 +3,9 @@
declare (strict_types=1); declare (strict_types=1);
namespace Rector\Nette\Rector\Neon; namespace Rector\Nette\Rector\Neon;
use RectorPrefix20211102\Nette\Utils\Strings; use RectorPrefix20211102\Nette\Neon\Node;
use Rector\Nette\Contract\Rector\NeonRectorInterface; use Rector\Nette\Contract\Rector\NeonRectorInterface;
use Rector\Nette\NeonParser\Node\Service_\SetupMethodCall;
use Rector\Renaming\Collector\MethodCallRenameCollector; use Rector\Renaming\Collector\MethodCallRenameCollector;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample; use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition; use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
@ -39,19 +40,29 @@ services:
CODE_SAMPLE CODE_SAMPLE
)]); )]);
} }
public function changeContent(string $content) : string /**
* @return class-string<Node>
*/
public function getNodeType() : string
{
return \Rector\Nette\NeonParser\Node\Service_\SetupMethodCall::class;
}
/**
* @param SetupMethodCall $node
* @return \Nette\Neon\Node|null
*/
public function enterNode(\RectorPrefix20211102\Nette\Neon\Node $node)
{ {
foreach ($this->methodCallRenameCollector->getMethodCallRenames() as $methodCallRename) { foreach ($this->methodCallRenameCollector->getMethodCallRenames() as $methodCallRename) {
$oldObjectType = $methodCallRename->getOldObjectType(); if (!\is_a($node->className, $methodCallRename->getClass(), \true)) {
$objectClassName = $oldObjectType->getClassName(); continue;
$className = \str_replace('\\', '\\\\', $objectClassName);
$oldMethodName = $methodCallRename->getOldMethod();
$newMethodName = $methodCallRename->getNewMethod();
$pattern = '#\\n(.*?)(class|factory): ' . $className . '(\\n|\\((.*?)\\)\\n)\\1setup:(.*?)- ' . $oldMethodName . '\\(#s';
if (\RectorPrefix20211102\Nette\Utils\Strings::match($content, $pattern)) {
$content = \str_replace($oldMethodName . '(', $newMethodName . '(', $content);
} }
if ($node->getMethodName() !== $methodCallRename->getOldMethod()) {
continue;
}
$node->methodNameLiteralNode->value = $methodCallRename->getNewMethod();
return $node;
} }
return $content; return null;
} }
} }

View File

@ -4,9 +4,11 @@ declare (strict_types=1);
namespace Rector\Nette\Rector\Property; namespace Rector\Nette\Rector\Property;
use PhpParser\Node; use PhpParser\Node;
use PhpParser\Node\Stmt\Class_;
use PhpParser\Node\Stmt\Property; use PhpParser\Node\Stmt\Property;
use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfo; use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfo;
use Rector\BetterPhpDocParser\PhpDocManipulator\PhpDocTagRemover; use Rector\BetterPhpDocParser\PhpDocManipulator\PhpDocTagRemover;
use Rector\Core\Exception\ShouldNotHappenException;
use Rector\Core\Rector\AbstractRector; use Rector\Core\Rector\AbstractRector;
use Rector\Core\ValueObject\PhpVersionFeature; use Rector\Core\ValueObject\PhpVersionFeature;
use Rector\FamilyTree\NodeAnalyzer\PropertyUsageAnalyzer; use Rector\FamilyTree\NodeAnalyzer\PropertyUsageAnalyzer;
@ -102,6 +104,9 @@ CODE_SAMPLE
} }
$this->changePropertyVisibility($property); $this->changePropertyVisibility($property);
$class = $property->getAttribute(\Rector\NodeTypeResolver\Node\AttributeKey::CLASS_NODE); $class = $property->getAttribute(\Rector\NodeTypeResolver\Node\AttributeKey::CLASS_NODE);
if (!$class instanceof \PhpParser\Node\Stmt\Class_) {
throw new \Rector\Core\Exception\ShouldNotHappenException();
}
$propertyName = $this->nodeNameResolver->getName($property); $propertyName = $this->nodeNameResolver->getName($property);
$propertyType = $this->nodeTypeResolver->getType($property); $propertyType = $this->nodeTypeResolver->getType($property);
$propertyMetadata = new \Rector\PostRector\ValueObject\PropertyMetadata($propertyName, $propertyType, $property->flags); $propertyMetadata = new \Rector\PostRector\ValueObject\PropertyMetadata($propertyName, $propertyType, $property->flags);

View File

@ -8,13 +8,13 @@
}, },
"require-dev": { "require-dev": {
"phpstan\/extension-installer": "^1.1", "phpstan\/extension-installer": "^1.1",
"rector\/phpstan-rules": "^0.4.7", "rector\/phpstan-rules": "^0.4.8",
"phpstan\/phpstan": "^1.0", "phpstan\/phpstan": "^1.0",
"phpunit\/phpunit": "^9.5", "phpunit\/phpunit": "^9.5",
"symplify\/phpstan-rules": "^9.5", "symplify\/phpstan-rules": "^10.0",
"symplify\/phpstan-extensions": "^9.5", "symplify\/phpstan-extensions": "^10.0",
"symplify\/easy-coding-standard": "^9.5", "symplify\/easy-coding-standard": "^10.0",
"symplify\/rule-doc-generator": "^9.5", "symplify\/rule-doc-generator": "^10.0",
"rector\/rector-src": "dev-main", "rector\/rector-src": "dev-main",
"rector\/rector-generator": "^0.4" "rector\/rector-generator": "^0.4"
}, },

View File

@ -3,11 +3,11 @@
declare (strict_types=1); declare (strict_types=1);
namespace RectorPrefix20211102; namespace RectorPrefix20211102;
use Rector\Php74\Rector\Property\TypedPropertyRector; use Rector\Core\Configuration\Option;
use Rector\Php80\Rector\Class_\ClassPropertyAssignToConstructorPromotionRector; use Rector\Set\ValueObject\LevelSetList;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator; use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
return static function (\Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator $containerConfigurator) : void { return static function (\Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator $containerConfigurator) : void {
$services = $containerConfigurator->services(); $containerConfigurator->import(\Rector\Set\ValueObject\LevelSetList::UP_TO_PHP_80);
$services->set(\Rector\Php74\Rector\Property\TypedPropertyRector::class); $parameters = $containerConfigurator->parameters();
$services->set(\Rector\Php80\Rector\Class_\ClassPropertyAssignToConstructorPromotionRector::class); $parameters->set(\Rector\Core\Configuration\Option::AUTO_IMPORT_NAMES, \true);
}; };

View File

@ -10,11 +10,11 @@
"rector\/rector-src": "dev-main", "rector\/rector-src": "dev-main",
"phpunit\/phpunit": "^9.5", "phpunit\/phpunit": "^9.5",
"phpstan\/phpstan": "^1.0", "phpstan\/phpstan": "^1.0",
"symplify\/phpstan-rules": "^9.2", "symplify\/phpstan-rules": "^10.0",
"symplify\/phpstan-extensions": "^9.5", "symplify\/phpstan-extensions": "^10.0",
"symplify\/easy-coding-standard": "^9.5", "symplify\/easy-coding-standard": "^10.0",
"symplify\/rule-doc-generator": "^9.5", "symplify\/rule-doc-generator": "^10.0",
"rector\/phpstan-rules": "^0.4.7", "rector\/phpstan-rules": "^0.4.8",
"phpstan\/extension-installer": "^1.1" "phpstan\/extension-installer": "^1.1"
}, },
"autoload": { "autoload": {

View File

@ -10,14 +10,14 @@
}, },
"require-dev": { "require-dev": {
"phpunit\/phpunit": "^9.5", "phpunit\/phpunit": "^9.5",
"rector\/rector-src": "dev-main#ae34327", "rector\/rector-src": "dev-main",
"phpstan\/phpstan": "1.0.x-dev as 0.12.99", "phpstan\/phpstan": "^1.0",
"symplify\/phpstan-rules": "^9.4", "symplify\/phpstan-rules": "^10.0",
"symfony\/security-core": "^5.3", "symfony\/security-core": "^5.3",
"symfony\/security-http": "^5.3", "symfony\/security-http": "^5.3",
"symplify\/phpstan-extensions": "^9.4", "symplify\/phpstan-extensions": "^10.0",
"symplify\/easy-coding-standard": "^9.4", "symplify\/easy-coding-standard": "^10.0",
"symplify\/rule-doc-generator": "^9.4", "symplify\/rule-doc-generator": "^10.0",
"phpstan\/extension-installer": "^1.1", "phpstan\/extension-installer": "^1.1",
"rector\/phpstan-rules": "^0.4.4" "rector\/phpstan-rules": "^0.4.4"
}, },

View File

@ -5,6 +5,7 @@ namespace Rector\Symfony\Bridge\NodeAnalyzer;
use PhpParser\Node; use PhpParser\Node;
use PhpParser\Node\Stmt\ClassMethod; use PhpParser\Node\Stmt\ClassMethod;
use PHPStan\Analyser\Scope;
use Rector\NodeCollector\ScopeResolver\ParentClassScopeResolver; use Rector\NodeCollector\ScopeResolver\ParentClassScopeResolver;
use Rector\NodeTypeResolver\Node\AttributeKey; use Rector\NodeTypeResolver\Node\AttributeKey;
final class ControllerMethodAnalyzer final class ControllerMethodAnalyzer
@ -26,6 +27,9 @@ final class ControllerMethodAnalyzer
return \false; return \false;
} }
$scope = $node->getAttribute(\Rector\NodeTypeResolver\Node\AttributeKey::SCOPE); $scope = $node->getAttribute(\Rector\NodeTypeResolver\Node\AttributeKey::SCOPE);
if (!$scope instanceof \PHPStan\Analyser\Scope) {
return \false;
}
$parentClassName = (string) $this->parentClassScopeResolver->resolveParentClassName($scope); $parentClassName = (string) $this->parentClassScopeResolver->resolveParentClassName($scope);
if (\substr_compare($parentClassName, 'Controller', -\strlen('Controller')) === 0) { if (\substr_compare($parentClassName, 'Controller', -\strlen('Controller')) === 0) {
return \true; return \true;

View File

@ -9,8 +9,8 @@ $loader = require_once __DIR__.'/autoload.php';
if (!class_exists('AutoloadIncluder', false) && !interface_exists('AutoloadIncluder', false) && !trait_exists('AutoloadIncluder', false)) { if (!class_exists('AutoloadIncluder', false) && !interface_exists('AutoloadIncluder', false) && !trait_exists('AutoloadIncluder', false)) {
spl_autoload_call('RectorPrefix20211102\AutoloadIncluder'); spl_autoload_call('RectorPrefix20211102\AutoloadIncluder');
} }
if (!class_exists('ComposerAutoloaderInitfe4e58c29112e82d9914ab75af40f1ae', false) && !interface_exists('ComposerAutoloaderInitfe4e58c29112e82d9914ab75af40f1ae', false) && !trait_exists('ComposerAutoloaderInitfe4e58c29112e82d9914ab75af40f1ae', false)) { if (!class_exists('ComposerAutoloaderInitb0744a6adb43e682b2e28b6c0b5a9843', false) && !interface_exists('ComposerAutoloaderInitb0744a6adb43e682b2e28b6c0b5a9843', false) && !trait_exists('ComposerAutoloaderInitb0744a6adb43e682b2e28b6c0b5a9843', false)) {
spl_autoload_call('RectorPrefix20211102\ComposerAutoloaderInitfe4e58c29112e82d9914ab75af40f1ae'); spl_autoload_call('RectorPrefix20211102\ComposerAutoloaderInitb0744a6adb43e682b2e28b6c0b5a9843');
} }
if (!class_exists('Helmich\TypoScriptParser\Parser\AST\Statement', false) && !interface_exists('Helmich\TypoScriptParser\Parser\AST\Statement', false) && !trait_exists('Helmich\TypoScriptParser\Parser\AST\Statement', false)) { if (!class_exists('Helmich\TypoScriptParser\Parser\AST\Statement', false) && !interface_exists('Helmich\TypoScriptParser\Parser\AST\Statement', false) && !trait_exists('Helmich\TypoScriptParser\Parser\AST\Statement', false)) {
spl_autoload_call('RectorPrefix20211102\Helmich\TypoScriptParser\Parser\AST\Statement'); spl_autoload_call('RectorPrefix20211102\Helmich\TypoScriptParser\Parser\AST\Statement');
@ -3306,9 +3306,9 @@ if (!function_exists('print_node')) {
return \RectorPrefix20211102\print_node(...func_get_args()); return \RectorPrefix20211102\print_node(...func_get_args());
} }
} }
if (!function_exists('composerRequirefe4e58c29112e82d9914ab75af40f1ae')) { if (!function_exists('composerRequireb0744a6adb43e682b2e28b6c0b5a9843')) {
function composerRequirefe4e58c29112e82d9914ab75af40f1ae() { function composerRequireb0744a6adb43e682b2e28b6c0b5a9843() {
return \RectorPrefix20211102\composerRequirefe4e58c29112e82d9914ab75af40f1ae(...func_get_args()); return \RectorPrefix20211102\composerRequireb0744a6adb43e682b2e28b6c0b5a9843(...func_get_args());
} }
} }
if (!function_exists('parseArgs')) { if (!function_exists('parseArgs')) {

View File

@ -7,14 +7,14 @@
"php": ">=8.0", "php": ">=8.0",
"nette\/utils": "^3.2", "nette\/utils": "^3.2",
"symfony\/dependency-injection": "^5.3|^6.0", "symfony\/dependency-injection": "^5.3|^6.0",
"symplify\/smart-file-system": "^9.5", "symplify\/smart-file-system": "^10.0",
"phpstan\/phpstan": "^1.0", "phpstan\/phpstan": "^1.0",
"nikic\/php-parser": "^4.13", "nikic\/php-parser": "^4.13",
"symplify\/package-builder": "^9.5", "symplify\/package-builder": "^10.0",
"symplify\/symplify-kernel": "^9.5" "symplify\/symplify-kernel": "^10.0"
}, },
"require-dev": { "require-dev": {
"symplify\/easy-testing": "^9.5", "symplify\/easy-testing": "^10.0",
"phpunit\/phpunit": "^9.5" "phpunit\/phpunit": "^9.5"
}, },
"autoload": { "autoload": {
@ -29,7 +29,7 @@
}, },
"extra": { "extra": {
"branch-alias": { "branch-alias": {
"dev-main": "9.5-dev" "dev-main": "10.0-dev"
}, },
"phpstan": { "phpstan": {
"includes": [ "includes": [
@ -38,33 +38,36 @@
} }
}, },
"conflict": { "conflict": {
"symplify\/composer-json-manipulator": "<9.4.70", "symplify\/composer-json-manipulator": "<10.0.0-beta1",
"symplify\/easy-coding-standard": "<9.4.70", "symplify\/easy-coding-standard": "<10.0.0-beta1",
"symplify\/phpstan-rules": "<9.4.70", "symplify\/phpstan-rules": "<10.0.0-beta1",
"symplify\/easy-testing": "<9.4.70", "symplify\/easy-testing": "<10.0.0-beta1",
"symplify\/psr4-switcher": "<9.4.70", "symplify\/psr4-switcher": "<10.0.0-beta1",
"symplify\/rule-doc-generator-contracts": "<9.4.70", "symplify\/rule-doc-generator-contracts": "<10.0.0-beta1",
"symplify\/symfony-php-config": "<9.4.70", "symplify\/symfony-php-config": "<10.0.0-beta1",
"symplify\/simple-php-doc-parser": "<9.4.70", "symplify\/simple-php-doc-parser": "<10.0.0-beta1",
"symplify\/php-config-printer": "<9.4.70", "symplify\/php-config-printer": "<10.0.0-beta1",
"symplify\/console-color-diff": "<9.4.70", "symplify\/console-color-diff": "<10.0.0-beta1",
"symplify\/markdown-diff": "<9.4.70", "symplify\/markdown-diff": "<10.0.0-beta1",
"symplify\/amnesia": "<9.4.70", "symplify\/amnesia": "<10.0.0-beta1",
"symplify\/phpstan-extensions": "<9.4.70", "symplify\/phpstan-extensions": "<10.0.0-beta1",
"symplify\/rule-doc-generator": "<9.4.70", "symplify\/rule-doc-generator": "<10.0.0-beta1",
"symplify\/vendor-patches": "<9.4.70", "symplify\/vendor-patches": "<10.0.0-beta1",
"symplify\/skipper": "<9.4.70", "symplify\/skipper": "<10.0.0-beta1",
"symplify\/smart-file-system": "<9.4.70", "symplify\/smart-file-system": "<9.4.70",
"symplify\/symfony-static-dumper": "<9.4.70", "symplify\/symfony-static-dumper": "<10.0.0-beta1",
"symplify\/git-wrapper": "<9.4.70", "symplify\/git-wrapper": "<10.0.0-beta1",
"symplify\/symplify-kernel": "<9.4.70", "symplify\/symplify-kernel": "<9.4.70",
"symplify\/monorepo-builder": "<9.4.70", "symplify\/monorepo-builder": "<10.0.0-beta1",
"symplify\/config-transformer": "<9.4.70", "symplify\/config-transformer": "<10.0.0-beta1",
"symplify\/easy-ci": "<9.4.70", "symplify\/easy-ci": "<10.0.0-beta1",
"symplify\/coding-standard": "<9.4.70", "symplify\/coding-standard": "<10.0.0-beta1",
"symplify\/twig-phpstan-compiler": "<9.4.70", "symplify\/twig-phpstan-compiler": "<10.0.0-beta1",
"symplify\/latte-phpstan-compiler": "<9.4.70", "symplify\/latte-phpstan-compiler": "<10.0.0-beta1",
"symplify\/template-phpstan-compiler": "<9.4.70" "symplify\/template-phpstan-compiler": "<10.0.0-beta1",
"symplify\/phpstan-latte-rules": "<10.0.0-beta1",
"symplify\/phpstan-twig-rules": "<10.0.0-beta1",
"symplify\/autowire-array-parameter": "<10.0.0-beta1"
}, },
"minimum-stability": "dev", "minimum-stability": "dev",
"prefer-stable": true "prefer-stable": true

View File

@ -6,7 +6,7 @@
"php": ">=8.0", "php": ">=8.0",
"nette\/utils": "^3.2", "nette\/utils": "^3.2",
"symfony\/dependency-injection": "^5.3|^6.0", "symfony\/dependency-injection": "^5.3|^6.0",
"symplify\/package-builder": "^9.5" "symplify\/package-builder": "^10.0"
}, },
"require-dev": { "require-dev": {
"phpunit\/phpunit": "^9.5" "phpunit\/phpunit": "^9.5"
@ -23,38 +23,40 @@
}, },
"extra": { "extra": {
"branch-alias": { "branch-alias": {
"dev-main": "9.5-dev" "dev-main": "10.0-dev"
} }
}, },
"conflict": { "conflict": {
"symplify\/astral": "<9.4.70", "symplify\/astral": "<10.0.0-beta1",
"symplify\/composer-json-manipulator": "<9.4.70", "symplify\/composer-json-manipulator": "<10.0.0-beta1",
"symplify\/easy-coding-standard": "<9.4.70", "symplify\/easy-coding-standard": "<10.0.0-beta1",
"symplify\/phpstan-rules": "<9.4.70", "symplify\/phpstan-rules": "<10.0.0-beta1",
"symplify\/easy-testing": "<9.4.70", "symplify\/easy-testing": "<10.0.0-beta1",
"symplify\/psr4-switcher": "<9.4.70", "symplify\/psr4-switcher": "<10.0.0-beta1",
"symplify\/rule-doc-generator-contracts": "<9.4.70", "symplify\/rule-doc-generator-contracts": "<10.0.0-beta1",
"symplify\/symfony-php-config": "<9.4.70", "symplify\/symfony-php-config": "<10.0.0-beta1",
"symplify\/simple-php-doc-parser": "<9.4.70", "symplify\/simple-php-doc-parser": "<10.0.0-beta1",
"symplify\/php-config-printer": "<9.4.70", "symplify\/php-config-printer": "<10.0.0-beta1",
"symplify\/console-color-diff": "<9.4.70", "symplify\/console-color-diff": "<10.0.0-beta1",
"symplify\/markdown-diff": "<9.4.70", "symplify\/markdown-diff": "<10.0.0-beta1",
"symplify\/amnesia": "<9.4.70", "symplify\/amnesia": "<10.0.0-beta1",
"symplify\/phpstan-extensions": "<9.4.70", "symplify\/phpstan-extensions": "<10.0.0-beta1",
"symplify\/rule-doc-generator": "<9.4.70", "symplify\/rule-doc-generator": "<10.0.0-beta1",
"symplify\/vendor-patches": "<9.4.70", "symplify\/vendor-patches": "<10.0.0-beta1",
"symplify\/skipper": "<9.4.70", "symplify\/skipper": "<10.0.0-beta1",
"symplify\/smart-file-system": "<9.4.70", "symplify\/smart-file-system": "<10.0.0-beta1",
"symplify\/symfony-static-dumper": "<9.4.70", "symplify\/symfony-static-dumper": "<10.0.0-beta1",
"symplify\/git-wrapper": "<9.4.70", "symplify\/git-wrapper": "<10.0.0-beta1",
"symplify\/symplify-kernel": "<9.4.70", "symplify\/symplify-kernel": "<10.0.0-beta1",
"symplify\/monorepo-builder": "<9.4.70", "symplify\/monorepo-builder": "<10.0.0-beta1",
"symplify\/config-transformer": "<9.4.70", "symplify\/config-transformer": "<10.0.0-beta1",
"symplify\/easy-ci": "<9.4.70", "symplify\/easy-ci": "<10.0.0-beta1",
"symplify\/coding-standard": "<9.4.70", "symplify\/coding-standard": "<10.0.0-beta1",
"symplify\/twig-phpstan-compiler": "<9.4.70", "symplify\/twig-phpstan-compiler": "<10.0.0-beta1",
"symplify\/latte-phpstan-compiler": "<9.4.70", "symplify\/latte-phpstan-compiler": "<10.0.0-beta1",
"symplify\/template-phpstan-compiler": "<9.4.70" "symplify\/template-phpstan-compiler": "<10.0.0-beta1",
"symplify\/phpstan-latte-rules": "<10.0.0-beta1",
"symplify\/phpstan-twig-rules": "<10.0.0-beta1"
}, },
"minimum-stability": "dev", "minimum-stability": "dev",
"prefer-stable": true "prefer-stable": true

View File

@ -9,9 +9,9 @@
"symfony\/config": "^5.3|^6.0", "symfony\/config": "^5.3|^6.0",
"symfony\/dependency-injection": "^5.3|^6.0", "symfony\/dependency-injection": "^5.3|^6.0",
"symfony\/filesystem": "^5.3|^6.0", "symfony\/filesystem": "^5.3|^6.0",
"symplify\/package-builder": "^9.5", "symplify\/package-builder": "^10.0",
"symplify\/symplify-kernel": "^9.5", "symplify\/symplify-kernel": "^10.0",
"symplify\/smart-file-system": "^9.5" "symplify\/smart-file-system": "^10.0"
}, },
"require-dev": { "require-dev": {
"phpunit\/phpunit": "^9.5" "phpunit\/phpunit": "^9.5"
@ -28,37 +28,39 @@
}, },
"extra": { "extra": {
"branch-alias": { "branch-alias": {
"dev-main": "9.5-dev" "dev-main": "10.0-dev"
} }
}, },
"conflict": { "conflict": {
"symplify\/astral": "<9.4.70", "symplify\/astral": "<10.0.0-beta1",
"symplify\/easy-coding-standard": "<9.4.70", "symplify\/easy-coding-standard": "<10.0.0-beta1",
"symplify\/phpstan-rules": "<9.4.70", "symplify\/phpstan-rules": "<10.0.0-beta1",
"symplify\/easy-testing": "<9.4.70", "symplify\/easy-testing": "<10.0.0-beta1",
"symplify\/psr4-switcher": "<9.4.70", "symplify\/psr4-switcher": "<10.0.0-beta1",
"symplify\/rule-doc-generator-contracts": "<9.4.70", "symplify\/rule-doc-generator-contracts": "<10.0.0-beta1",
"symplify\/symfony-php-config": "<9.4.70", "symplify\/symfony-php-config": "<10.0.0-beta1",
"symplify\/simple-php-doc-parser": "<9.4.70", "symplify\/simple-php-doc-parser": "<10.0.0-beta1",
"symplify\/php-config-printer": "<9.4.70", "symplify\/php-config-printer": "<10.0.0-beta1",
"symplify\/console-color-diff": "<9.4.70", "symplify\/console-color-diff": "<10.0.0-beta1",
"symplify\/autowire-array-parameter": "<9.4.70", "symplify\/autowire-array-parameter": "<10.0.0-beta1",
"symplify\/markdown-diff": "<9.4.70", "symplify\/markdown-diff": "<10.0.0-beta1",
"symplify\/amnesia": "<9.4.70", "symplify\/amnesia": "<10.0.0-beta1",
"symplify\/phpstan-extensions": "<9.4.70", "symplify\/phpstan-extensions": "<10.0.0-beta1",
"symplify\/rule-doc-generator": "<9.4.70", "symplify\/rule-doc-generator": "<10.0.0-beta1",
"symplify\/vendor-patches": "<9.4.70", "symplify\/vendor-patches": "<10.0.0-beta1",
"symplify\/skipper": "<9.4.70", "symplify\/skipper": "<10.0.0-beta1",
"symplify\/symfony-static-dumper": "<9.4.70", "symplify\/symfony-static-dumper": "<10.0.0-beta1",
"symplify\/git-wrapper": "<9.4.70", "symplify\/git-wrapper": "<10.0.0-beta1",
"symplify\/symplify-kernel": "<9.4.70", "symplify\/symplify-kernel": "<9.4.70",
"symplify\/monorepo-builder": "<9.4.70", "symplify\/monorepo-builder": "<10.0.0-beta1",
"symplify\/config-transformer": "<9.4.70", "symplify\/config-transformer": "<10.0.0-beta1",
"symplify\/easy-ci": "<9.4.70", "symplify\/easy-ci": "<10.0.0-beta1",
"symplify\/coding-standard": "<9.4.70", "symplify\/coding-standard": "<10.0.0-beta1",
"symplify\/twig-phpstan-compiler": "<9.4.70", "symplify\/twig-phpstan-compiler": "<10.0.0-beta1",
"symplify\/latte-phpstan-compiler": "<9.4.70", "symplify\/latte-phpstan-compiler": "<10.0.0-beta1",
"symplify\/template-phpstan-compiler": "<9.4.70" "symplify\/template-phpstan-compiler": "<10.0.0-beta1",
"symplify\/phpstan-latte-rules": "<10.0.0-beta1",
"symplify\/phpstan-twig-rules": "<10.0.0-beta1"
}, },
"minimum-stability": "dev", "minimum-stability": "dev",
"prefer-stable": true "prefer-stable": true

View File

@ -8,7 +8,7 @@
"symfony\/console": "^5.3|^6.0", "symfony\/console": "^5.3|^6.0",
"sebastian\/diff": "^4.0", "sebastian\/diff": "^4.0",
"symfony\/dependency-injection": "^5.3|^6.0", "symfony\/dependency-injection": "^5.3|^6.0",
"symplify\/package-builder": "^9.5" "symplify\/package-builder": "^10.0"
}, },
"require-dev": { "require-dev": {
"phpunit\/phpunit": "^9.5" "phpunit\/phpunit": "^9.5"
@ -25,38 +25,40 @@
}, },
"extra": { "extra": {
"branch-alias": { "branch-alias": {
"dev-main": "9.5-dev" "dev-main": "10.0-dev"
} }
}, },
"conflict": { "conflict": {
"symplify\/astral": "<9.4.70", "symplify\/astral": "<10.0.0-beta1",
"symplify\/composer-json-manipulator": "<9.4.70", "symplify\/composer-json-manipulator": "<10.0.0-beta1",
"symplify\/easy-coding-standard": "<9.4.70", "symplify\/easy-coding-standard": "<10.0.0-beta1",
"symplify\/phpstan-rules": "<9.4.70", "symplify\/phpstan-rules": "<10.0.0-beta1",
"symplify\/easy-testing": "<9.4.70", "symplify\/easy-testing": "<10.0.0-beta1",
"symplify\/psr4-switcher": "<9.4.70", "symplify\/psr4-switcher": "<10.0.0-beta1",
"symplify\/rule-doc-generator-contracts": "<9.4.70", "symplify\/rule-doc-generator-contracts": "<10.0.0-beta1",
"symplify\/symfony-php-config": "<9.4.70", "symplify\/symfony-php-config": "<10.0.0-beta1",
"symplify\/simple-php-doc-parser": "<9.4.70", "symplify\/simple-php-doc-parser": "<10.0.0-beta1",
"symplify\/php-config-printer": "<9.4.70", "symplify\/php-config-printer": "<10.0.0-beta1",
"symplify\/autowire-array-parameter": "<9.4.70", "symplify\/autowire-array-parameter": "<10.0.0-beta1",
"symplify\/markdown-diff": "<9.4.70", "symplify\/markdown-diff": "<10.0.0-beta1",
"symplify\/amnesia": "<9.4.70", "symplify\/amnesia": "<10.0.0-beta1",
"symplify\/phpstan-extensions": "<9.4.70", "symplify\/phpstan-extensions": "<10.0.0-beta1",
"symplify\/rule-doc-generator": "<9.4.70", "symplify\/rule-doc-generator": "<10.0.0-beta1",
"symplify\/vendor-patches": "<9.4.70", "symplify\/vendor-patches": "<10.0.0-beta1",
"symplify\/skipper": "<9.4.70", "symplify\/skipper": "<10.0.0-beta1",
"symplify\/smart-file-system": "<9.4.70", "symplify\/smart-file-system": "<10.0.0-beta1",
"symplify\/symfony-static-dumper": "<9.4.70", "symplify\/symfony-static-dumper": "<10.0.0-beta1",
"symplify\/git-wrapper": "<9.4.70", "symplify\/git-wrapper": "<10.0.0-beta1",
"symplify\/symplify-kernel": "<9.4.70", "symplify\/symplify-kernel": "<10.0.0-beta1",
"symplify\/monorepo-builder": "<9.4.70", "symplify\/monorepo-builder": "<10.0.0-beta1",
"symplify\/config-transformer": "<9.4.70", "symplify\/config-transformer": "<10.0.0-beta1",
"symplify\/easy-ci": "<9.4.70", "symplify\/easy-ci": "<10.0.0-beta1",
"symplify\/coding-standard": "<9.4.70", "symplify\/coding-standard": "<10.0.0-beta1",
"symplify\/twig-phpstan-compiler": "<9.4.70", "symplify\/twig-phpstan-compiler": "<10.0.0-beta1",
"symplify\/latte-phpstan-compiler": "<9.4.70", "symplify\/latte-phpstan-compiler": "<10.0.0-beta1",
"symplify\/template-phpstan-compiler": "<9.4.70" "symplify\/template-phpstan-compiler": "<10.0.0-beta1",
"symplify\/phpstan-latte-rules": "<10.0.0-beta1",
"symplify\/phpstan-twig-rules": "<10.0.0-beta1"
}, },
"minimum-stability": "dev", "minimum-stability": "dev",
"prefer-stable": true "prefer-stable": true

View File

@ -12,9 +12,9 @@
"symfony\/finder": "^5.3|^6.0", "symfony\/finder": "^5.3|^6.0",
"symfony\/console": "^5.3|^6.0", "symfony\/console": "^5.3|^6.0",
"symfony\/dependency-injection": "^5.3|^6.0", "symfony\/dependency-injection": "^5.3|^6.0",
"symplify\/package-builder": "^9.5", "symplify\/package-builder": "^10.0",
"symplify\/smart-file-system": "^9.5", "symplify\/smart-file-system": "^10.0",
"symplify\/symplify-kernel": "^9.5" "symplify\/symplify-kernel": "^10.0"
}, },
"require-dev": { "require-dev": {
"phpunit\/phpunit": "^9.5" "phpunit\/phpunit": "^9.5"
@ -31,36 +31,38 @@
}, },
"extra": { "extra": {
"branch-alias": { "branch-alias": {
"dev-main": "9.5-dev" "dev-main": "10.0-dev"
} }
}, },
"conflict": { "conflict": {
"symplify\/astral": "<9.4.70", "symplify\/astral": "<10.0.0-beta1",
"symplify\/composer-json-manipulator": "<9.4.70", "symplify\/composer-json-manipulator": "<10.0.0-beta1",
"symplify\/easy-coding-standard": "<9.4.70", "symplify\/easy-coding-standard": "<10.0.0-beta1",
"symplify\/phpstan-rules": "<9.4.70", "symplify\/phpstan-rules": "<10.0.0-beta1",
"symplify\/psr4-switcher": "<9.4.70", "symplify\/psr4-switcher": "<10.0.0-beta1",
"symplify\/rule-doc-generator-contracts": "<9.4.70", "symplify\/rule-doc-generator-contracts": "<10.0.0-beta1",
"symplify\/symfony-php-config": "<9.4.70", "symplify\/symfony-php-config": "<10.0.0-beta1",
"symplify\/simple-php-doc-parser": "<9.4.70", "symplify\/simple-php-doc-parser": "<10.0.0-beta1",
"symplify\/php-config-printer": "<9.4.70", "symplify\/php-config-printer": "<10.0.0-beta1",
"symplify\/console-color-diff": "<9.4.70", "symplify\/console-color-diff": "<10.0.0-beta1",
"symplify\/autowire-array-parameter": "<9.4.70", "symplify\/autowire-array-parameter": "<10.0.0-beta1",
"symplify\/markdown-diff": "<9.4.70", "symplify\/markdown-diff": "<10.0.0-beta1",
"symplify\/amnesia": "<9.4.70", "symplify\/amnesia": "<10.0.0-beta1",
"symplify\/phpstan-extensions": "<9.4.70", "symplify\/phpstan-extensions": "<10.0.0-beta1",
"symplify\/rule-doc-generator": "<9.4.70", "symplify\/rule-doc-generator": "<10.0.0-beta1",
"symplify\/vendor-patches": "<9.4.70", "symplify\/vendor-patches": "<10.0.0-beta1",
"symplify\/skipper": "<9.4.70", "symplify\/skipper": "<10.0.0-beta1",
"symplify\/symfony-static-dumper": "<9.4.70", "symplify\/symfony-static-dumper": "<10.0.0-beta1",
"symplify\/git-wrapper": "<9.4.70", "symplify\/git-wrapper": "<10.0.0-beta1",
"symplify\/monorepo-builder": "<9.4.70", "symplify\/monorepo-builder": "<10.0.0-beta1",
"symplify\/config-transformer": "<9.4.70", "symplify\/config-transformer": "<10.0.0-beta1",
"symplify\/easy-ci": "<9.4.70", "symplify\/easy-ci": "<10.0.0-beta1",
"symplify\/coding-standard": "<9.4.70", "symplify\/coding-standard": "<10.0.0-beta1",
"symplify\/twig-phpstan-compiler": "<9.4.70", "symplify\/twig-phpstan-compiler": "<10.0.0-beta1",
"symplify\/latte-phpstan-compiler": "<9.4.70", "symplify\/latte-phpstan-compiler": "<10.0.0-beta1",
"symplify\/template-phpstan-compiler": "<9.4.70" "symplify\/template-phpstan-compiler": "<10.0.0-beta1",
"symplify\/phpstan-latte-rules": "<10.0.0-beta1",
"symplify\/phpstan-twig-rules": "<10.0.0-beta1"
}, },
"minimum-stability": "dev", "minimum-stability": "dev",
"prefer-stable": true "prefer-stable": true

View File

@ -9,8 +9,8 @@
"symfony\/console": "^5.3|^6.0", "symfony\/console": "^5.3|^6.0",
"symfony\/dependency-injection": "^5.3|^6.0", "symfony\/dependency-injection": "^5.3|^6.0",
"symfony\/finder": "^5.3|^6.0", "symfony\/finder": "^5.3|^6.0",
"symplify\/symplify-kernel": "^9.5", "symplify\/symplify-kernel": "^10.0",
"symplify\/easy-testing": "^9.5", "symplify\/easy-testing": "^10.0",
"nette\/neon": "^3.2" "nette\/neon": "^3.2"
}, },
"require-dev": { "require-dev": {
@ -28,37 +28,39 @@
}, },
"extra": { "extra": {
"branch-alias": { "branch-alias": {
"dev-main": "9.5-dev" "dev-main": "10.0-dev"
} }
}, },
"conflict": { "conflict": {
"symplify\/astral": "<9.4.70", "symplify\/astral": "<10.0.0-beta1",
"symplify\/composer-json-manipulator": "<9.4.70", "symplify\/composer-json-manipulator": "<10.0.0-beta1",
"symplify\/easy-coding-standard": "<9.4.70", "symplify\/easy-coding-standard": "<10.0.0-beta1",
"symplify\/phpstan-rules": "<9.4.70", "symplify\/phpstan-rules": "<10.0.0-beta1",
"symplify\/psr4-switcher": "<9.4.70", "symplify\/psr4-switcher": "<10.0.0-beta1",
"symplify\/rule-doc-generator-contracts": "<9.4.70", "symplify\/rule-doc-generator-contracts": "<10.0.0-beta1",
"symplify\/symfony-php-config": "<9.4.70", "symplify\/symfony-php-config": "<10.0.0-beta1",
"symplify\/simple-php-doc-parser": "<9.4.70", "symplify\/simple-php-doc-parser": "<10.0.0-beta1",
"symplify\/php-config-printer": "<9.4.70", "symplify\/php-config-printer": "<10.0.0-beta1",
"symplify\/console-color-diff": "<9.4.70", "symplify\/console-color-diff": "<10.0.0-beta1",
"symplify\/autowire-array-parameter": "<9.4.70", "symplify\/autowire-array-parameter": "<10.0.0-beta1",
"symplify\/markdown-diff": "<9.4.70", "symplify\/markdown-diff": "<10.0.0-beta1",
"symplify\/amnesia": "<9.4.70", "symplify\/amnesia": "<10.0.0-beta1",
"symplify\/phpstan-extensions": "<9.4.70", "symplify\/phpstan-extensions": "<10.0.0-beta1",
"symplify\/rule-doc-generator": "<9.4.70", "symplify\/rule-doc-generator": "<10.0.0-beta1",
"symplify\/vendor-patches": "<9.4.70", "symplify\/vendor-patches": "<10.0.0-beta1",
"symplify\/skipper": "<9.4.70", "symplify\/skipper": "<10.0.0-beta1",
"symplify\/smart-file-system": "<9.4.70", "symplify\/smart-file-system": "<10.0.0-beta1",
"symplify\/symfony-static-dumper": "<9.4.70", "symplify\/symfony-static-dumper": "<10.0.0-beta1",
"symplify\/git-wrapper": "<9.4.70", "symplify\/git-wrapper": "<10.0.0-beta1",
"symplify\/monorepo-builder": "<9.4.70", "symplify\/monorepo-builder": "<10.0.0-beta1",
"symplify\/config-transformer": "<9.4.70", "symplify\/config-transformer": "<10.0.0-beta1",
"symplify\/easy-ci": "<9.4.70", "symplify\/easy-ci": "<10.0.0-beta1",
"symplify\/coding-standard": "<9.4.70", "symplify\/coding-standard": "<10.0.0-beta1",
"symplify\/twig-phpstan-compiler": "<9.4.70", "symplify\/twig-phpstan-compiler": "<10.0.0-beta1",
"symplify\/latte-phpstan-compiler": "<9.4.70", "symplify\/latte-phpstan-compiler": "<10.0.0-beta1",
"symplify\/template-phpstan-compiler": "<9.4.70" "symplify\/template-phpstan-compiler": "<10.0.0-beta1",
"symplify\/phpstan-latte-rules": "<10.0.0-beta1",
"symplify\/phpstan-twig-rules": "<10.0.0-beta1"
}, },
"minimum-stability": "dev", "minimum-stability": "dev",
"prefer-stable": true "prefer-stable": true

View File

@ -14,39 +14,41 @@
}, },
"extra": { "extra": {
"branch-alias": { "branch-alias": {
"dev-main": "9.5-dev" "dev-main": "10.0-dev"
} }
}, },
"conflict": { "conflict": {
"symplify\/astral": "<9.4.70", "symplify\/astral": "<10.0.0-beta1",
"symplify\/composer-json-manipulator": "<9.4.70", "symplify\/composer-json-manipulator": "<10.0.0-beta1",
"symplify\/easy-coding-standard": "<9.4.70", "symplify\/easy-coding-standard": "<10.0.0-beta1",
"symplify\/phpstan-rules": "<9.4.70", "symplify\/phpstan-rules": "<10.0.0-beta1",
"symplify\/easy-testing": "<9.4.70", "symplify\/easy-testing": "<10.0.0-beta1",
"symplify\/psr4-switcher": "<9.4.70", "symplify\/psr4-switcher": "<10.0.0-beta1",
"symplify\/symfony-php-config": "<9.4.70", "symplify\/symfony-php-config": "<10.0.0-beta1",
"symplify\/simple-php-doc-parser": "<9.4.70", "symplify\/simple-php-doc-parser": "<10.0.0-beta1",
"symplify\/php-config-printer": "<9.4.70", "symplify\/php-config-printer": "<10.0.0-beta1",
"symplify\/console-color-diff": "<9.4.70", "symplify\/console-color-diff": "<10.0.0-beta1",
"symplify\/autowire-array-parameter": "<9.4.70", "symplify\/autowire-array-parameter": "<10.0.0-beta1",
"symplify\/markdown-diff": "<9.4.70", "symplify\/markdown-diff": "<10.0.0-beta1",
"symplify\/package-builder": "<9.4.70", "symplify\/package-builder": "<10.0.0-beta1",
"symplify\/amnesia": "<9.4.70", "symplify\/amnesia": "<10.0.0-beta1",
"symplify\/phpstan-extensions": "<9.4.70", "symplify\/phpstan-extensions": "<10.0.0-beta1",
"symplify\/rule-doc-generator": "<9.4.70", "symplify\/rule-doc-generator": "<10.0.0-beta1",
"symplify\/vendor-patches": "<9.4.70", "symplify\/vendor-patches": "<10.0.0-beta1",
"symplify\/skipper": "<9.4.70", "symplify\/skipper": "<10.0.0-beta1",
"symplify\/smart-file-system": "<9.4.70", "symplify\/smart-file-system": "<10.0.0-beta1",
"symplify\/symfony-static-dumper": "<9.4.70", "symplify\/symfony-static-dumper": "<10.0.0-beta1",
"symplify\/git-wrapper": "<9.4.70", "symplify\/git-wrapper": "<10.0.0-beta1",
"symplify\/symplify-kernel": "<9.4.70", "symplify\/symplify-kernel": "<10.0.0-beta1",
"symplify\/monorepo-builder": "<9.4.70", "symplify\/monorepo-builder": "<10.0.0-beta1",
"symplify\/config-transformer": "<9.4.70", "symplify\/config-transformer": "<10.0.0-beta1",
"symplify\/easy-ci": "<9.4.70", "symplify\/easy-ci": "<10.0.0-beta1",
"symplify\/coding-standard": "<9.4.70", "symplify\/coding-standard": "<10.0.0-beta1",
"symplify\/twig-phpstan-compiler": "<9.4.70", "symplify\/twig-phpstan-compiler": "<10.0.0-beta1",
"symplify\/latte-phpstan-compiler": "<9.4.70", "symplify\/latte-phpstan-compiler": "<10.0.0-beta1",
"symplify\/template-phpstan-compiler": "<9.4.70" "symplify\/template-phpstan-compiler": "<10.0.0-beta1",
"symplify\/phpstan-latte-rules": "<10.0.0-beta1",
"symplify\/phpstan-twig-rules": "<10.0.0-beta1"
}, },
"minimum-stability": "dev", "minimum-stability": "dev",
"prefer-stable": true "prefer-stable": true

View File

@ -7,11 +7,11 @@
"phpstan\/phpdoc-parser": "^1.2", "phpstan\/phpdoc-parser": "^1.2",
"symfony\/dependency-injection": "^5.3|^6.0", "symfony\/dependency-injection": "^5.3|^6.0",
"symfony\/config": "^5.3|^6.0", "symfony\/config": "^5.3|^6.0",
"symplify\/package-builder": "^9.5" "symplify\/package-builder": "^10.0"
}, },
"require-dev": { "require-dev": {
"phpunit\/phpunit": "^9.5", "phpunit\/phpunit": "^9.5",
"symplify\/easy-testing": "^9.5" "symplify\/easy-testing": "^10.0"
}, },
"autoload": { "autoload": {
"psr-4": { "psr-4": {
@ -25,38 +25,40 @@
}, },
"extra": { "extra": {
"branch-alias": { "branch-alias": {
"dev-main": "9.5-dev" "dev-main": "10.0-dev"
} }
}, },
"conflict": { "conflict": {
"symplify\/astral": "<9.4.70", "symplify\/astral": "<10.0.0-beta1",
"symplify\/composer-json-manipulator": "<9.4.70", "symplify\/composer-json-manipulator": "<10.0.0-beta1",
"symplify\/easy-coding-standard": "<9.4.70", "symplify\/easy-coding-standard": "<10.0.0-beta1",
"symplify\/phpstan-rules": "<9.4.70", "symplify\/phpstan-rules": "<10.0.0-beta1",
"symplify\/easy-testing": "<9.4.70", "symplify\/easy-testing": "<10.0.0-beta1",
"symplify\/psr4-switcher": "<9.4.70", "symplify\/psr4-switcher": "<10.0.0-beta1",
"symplify\/rule-doc-generator-contracts": "<9.4.70", "symplify\/rule-doc-generator-contracts": "<10.0.0-beta1",
"symplify\/symfony-php-config": "<9.4.70", "symplify\/symfony-php-config": "<10.0.0-beta1",
"symplify\/php-config-printer": "<9.4.70", "symplify\/php-config-printer": "<10.0.0-beta1",
"symplify\/console-color-diff": "<9.4.70", "symplify\/console-color-diff": "<10.0.0-beta1",
"symplify\/autowire-array-parameter": "<9.4.70", "symplify\/autowire-array-parameter": "<10.0.0-beta1",
"symplify\/markdown-diff": "<9.4.70", "symplify\/markdown-diff": "<10.0.0-beta1",
"symplify\/amnesia": "<9.4.70", "symplify\/amnesia": "<10.0.0-beta1",
"symplify\/phpstan-extensions": "<9.4.70", "symplify\/phpstan-extensions": "<10.0.0-beta1",
"symplify\/rule-doc-generator": "<9.4.70", "symplify\/rule-doc-generator": "<10.0.0-beta1",
"symplify\/vendor-patches": "<9.4.70", "symplify\/vendor-patches": "<10.0.0-beta1",
"symplify\/skipper": "<9.4.70", "symplify\/skipper": "<10.0.0-beta1",
"symplify\/smart-file-system": "<9.4.70", "symplify\/smart-file-system": "<10.0.0-beta1",
"symplify\/symfony-static-dumper": "<9.4.70", "symplify\/symfony-static-dumper": "<10.0.0-beta1",
"symplify\/git-wrapper": "<9.4.70", "symplify\/git-wrapper": "<10.0.0-beta1",
"symplify\/symplify-kernel": "<9.4.70", "symplify\/symplify-kernel": "<10.0.0-beta1",
"symplify\/monorepo-builder": "<9.4.70", "symplify\/monorepo-builder": "<10.0.0-beta1",
"symplify\/config-transformer": "<9.4.70", "symplify\/config-transformer": "<10.0.0-beta1",
"symplify\/easy-ci": "<9.4.70", "symplify\/easy-ci": "<10.0.0-beta1",
"symplify\/coding-standard": "<9.4.70", "symplify\/coding-standard": "<10.0.0-beta1",
"symplify\/twig-phpstan-compiler": "<9.4.70", "symplify\/twig-phpstan-compiler": "<10.0.0-beta1",
"symplify\/latte-phpstan-compiler": "<9.4.70", "symplify\/latte-phpstan-compiler": "<10.0.0-beta1",
"symplify\/template-phpstan-compiler": "<9.4.70" "symplify\/template-phpstan-compiler": "<10.0.0-beta1",
"symplify\/phpstan-latte-rules": "<10.0.0-beta1",
"symplify\/phpstan-twig-rules": "<10.0.0-beta1"
}, },
"minimum-stability": "dev", "minimum-stability": "dev",
"prefer-stable": true "prefer-stable": true

View File

@ -9,9 +9,9 @@
"symfony\/dependency-injection": "^5.3|^6.0", "symfony\/dependency-injection": "^5.3|^6.0",
"symfony\/finder": "^5.3|^6.0", "symfony\/finder": "^5.3|^6.0",
"symfony\/filesystem": "^5.3|^6.0", "symfony\/filesystem": "^5.3|^6.0",
"symplify\/package-builder": "^9.5", "symplify\/package-builder": "^10.0",
"symplify\/symplify-kernel": "^9.5", "symplify\/symplify-kernel": "^10.0",
"symplify\/smart-file-system": "^9.5" "symplify\/smart-file-system": "^10.0"
}, },
"require-dev": { "require-dev": {
"phpunit\/phpunit": "^9.5" "phpunit\/phpunit": "^9.5"
@ -28,36 +28,38 @@
}, },
"extra": { "extra": {
"branch-alias": { "branch-alias": {
"dev-main": "9.5-dev" "dev-main": "10.0-dev"
} }
}, },
"conflict": { "conflict": {
"symplify\/astral": "<9.4.70", "symplify\/astral": "<10.0.0-beta1",
"symplify\/composer-json-manipulator": "<9.4.70", "symplify\/composer-json-manipulator": "<10.0.0-beta1",
"symplify\/easy-coding-standard": "<9.4.70", "symplify\/easy-coding-standard": "<10.0.0-beta1",
"symplify\/phpstan-rules": "<9.4.70", "symplify\/phpstan-rules": "<10.0.0-beta1",
"symplify\/easy-testing": "<9.4.70", "symplify\/easy-testing": "<10.0.0-beta1",
"symplify\/psr4-switcher": "<9.4.70", "symplify\/psr4-switcher": "<10.0.0-beta1",
"symplify\/rule-doc-generator-contracts": "<9.4.70", "symplify\/rule-doc-generator-contracts": "<10.0.0-beta1",
"symplify\/symfony-php-config": "<9.4.70", "symplify\/symfony-php-config": "<10.0.0-beta1",
"symplify\/simple-php-doc-parser": "<9.4.70", "symplify\/simple-php-doc-parser": "<10.0.0-beta1",
"symplify\/php-config-printer": "<9.4.70", "symplify\/php-config-printer": "<10.0.0-beta1",
"symplify\/console-color-diff": "<9.4.70", "symplify\/console-color-diff": "<10.0.0-beta1",
"symplify\/autowire-array-parameter": "<9.4.70", "symplify\/autowire-array-parameter": "<10.0.0-beta1",
"symplify\/markdown-diff": "<9.4.70", "symplify\/markdown-diff": "<10.0.0-beta1",
"symplify\/amnesia": "<9.4.70", "symplify\/amnesia": "<10.0.0-beta1",
"symplify\/phpstan-extensions": "<9.4.70", "symplify\/phpstan-extensions": "<10.0.0-beta1",
"symplify\/rule-doc-generator": "<9.4.70", "symplify\/rule-doc-generator": "<10.0.0-beta1",
"symplify\/vendor-patches": "<9.4.70", "symplify\/vendor-patches": "<10.0.0-beta1",
"symplify\/symfony-static-dumper": "<9.4.70", "symplify\/symfony-static-dumper": "<10.0.0-beta1",
"symplify\/git-wrapper": "<9.4.70", "symplify\/git-wrapper": "<10.0.0-beta1",
"symplify\/monorepo-builder": "<9.4.70", "symplify\/monorepo-builder": "<10.0.0-beta1",
"symplify\/config-transformer": "<9.4.70", "symplify\/config-transformer": "<10.0.0-beta1",
"symplify\/easy-ci": "<9.4.70", "symplify\/easy-ci": "<10.0.0-beta1",
"symplify\/coding-standard": "<9.4.70", "symplify\/coding-standard": "<10.0.0-beta1",
"symplify\/twig-phpstan-compiler": "<9.4.70", "symplify\/twig-phpstan-compiler": "<10.0.0-beta1",
"symplify\/latte-phpstan-compiler": "<9.4.70", "symplify\/latte-phpstan-compiler": "<10.0.0-beta1",
"symplify\/template-phpstan-compiler": "<9.4.70" "symplify\/template-phpstan-compiler": "<10.0.0-beta1",
"symplify\/phpstan-latte-rules": "<10.0.0-beta1",
"symplify\/phpstan-twig-rules": "<10.0.0-beta1"
}, },
"minimum-stability": "dev", "minimum-stability": "dev",
"prefer-stable": true "prefer-stable": true

View File

@ -24,39 +24,41 @@
}, },
"extra": { "extra": {
"branch-alias": { "branch-alias": {
"dev-main": "9.5-dev" "dev-main": "10.0-dev"
} }
}, },
"conflict": { "conflict": {
"symplify\/astral": "<9.4.70", "symplify\/astral": "<10.0.0-beta1",
"symplify\/composer-json-manipulator": "<9.4.70", "symplify\/composer-json-manipulator": "<10.0.0-beta1",
"symplify\/easy-coding-standard": "<9.4.70", "symplify\/easy-coding-standard": "<10.0.0-beta1",
"symplify\/phpstan-rules": "<9.4.70", "symplify\/phpstan-rules": "<10.0.0-beta1",
"symplify\/easy-testing": "<9.4.70", "symplify\/easy-testing": "<10.0.0-beta1",
"symplify\/psr4-switcher": "<9.4.70", "symplify\/psr4-switcher": "<10.0.0-beta1",
"symplify\/rule-doc-generator-contracts": "<9.4.70", "symplify\/rule-doc-generator-contracts": "<10.0.0-beta1",
"symplify\/symfony-php-config": "<9.4.70", "symplify\/symfony-php-config": "<10.0.0-beta1",
"symplify\/simple-php-doc-parser": "<9.4.70", "symplify\/simple-php-doc-parser": "<10.0.0-beta1",
"symplify\/php-config-printer": "<9.4.70", "symplify\/php-config-printer": "<10.0.0-beta1",
"symplify\/console-color-diff": "<9.4.70", "symplify\/console-color-diff": "<10.0.0-beta1",
"symplify\/autowire-array-parameter": "<9.4.70", "symplify\/autowire-array-parameter": "<10.0.0-beta1",
"symplify\/markdown-diff": "<9.4.70", "symplify\/markdown-diff": "<10.0.0-beta1",
"symplify\/package-builder": "<9.4.70", "symplify\/package-builder": "<10.0.0-beta1",
"symplify\/amnesia": "<9.4.70", "symplify\/amnesia": "<10.0.0-beta1",
"symplify\/phpstan-extensions": "<9.4.70", "symplify\/phpstan-extensions": "<10.0.0-beta1",
"symplify\/rule-doc-generator": "<9.4.70", "symplify\/rule-doc-generator": "<10.0.0-beta1",
"symplify\/vendor-patches": "<9.4.70", "symplify\/vendor-patches": "<10.0.0-beta1",
"symplify\/skipper": "<9.4.70", "symplify\/skipper": "<10.0.0-beta1",
"symplify\/symfony-static-dumper": "<9.4.70", "symplify\/symfony-static-dumper": "<10.0.0-beta1",
"symplify\/git-wrapper": "<9.4.70", "symplify\/git-wrapper": "<10.0.0-beta1",
"symplify\/symplify-kernel": "<9.4.70", "symplify\/symplify-kernel": "<10.0.0-beta1",
"symplify\/monorepo-builder": "<9.4.70", "symplify\/monorepo-builder": "<10.0.0-beta1",
"symplify\/config-transformer": "<9.4.70", "symplify\/config-transformer": "<10.0.0-beta1",
"symplify\/easy-ci": "<9.4.70", "symplify\/easy-ci": "<10.0.0-beta1",
"symplify\/coding-standard": "<9.4.70", "symplify\/coding-standard": "<10.0.0-beta1",
"symplify\/twig-phpstan-compiler": "<9.4.70", "symplify\/twig-phpstan-compiler": "<10.0.0-beta1",
"symplify\/latte-phpstan-compiler": "<9.4.70", "symplify\/latte-phpstan-compiler": "<10.0.0-beta1",
"symplify\/template-phpstan-compiler": "<9.4.70" "symplify\/template-phpstan-compiler": "<10.0.0-beta1",
"symplify\/phpstan-latte-rules": "<10.0.0-beta1",
"symplify\/phpstan-twig-rules": "<10.0.0-beta1"
}, },
"minimum-stability": "dev", "minimum-stability": "dev",
"prefer-stable": true "prefer-stable": true

View File

@ -5,13 +5,12 @@
"require": { "require": {
"php": ">=8.0", "php": ">=8.0",
"symfony\/dependency-injection": "^5.3|^6.0", "symfony\/dependency-injection": "^5.3|^6.0",
"symplify\/symplify-kernel": "^9.5", "symplify\/symplify-kernel": "^10.0",
"symplify\/package-builder": "^9.5" "symplify\/package-builder": "^10.0"
}, },
"require-dev": { "require-dev": {
"symfony\/http-kernel": "^5.3|^6.0",
"phpunit\/phpunit": "^9.5", "phpunit\/phpunit": "^9.5",
"phpstan\/phpstan": "^0.12.99" "phpstan\/phpstan": "^1.0"
}, },
"autoload": { "autoload": {
"psr-4": { "psr-4": {
@ -25,39 +24,39 @@
}, },
"extra": { "extra": {
"branch-alias": { "branch-alias": {
"dev-main": "9.5-dev" "dev-main": "10.0-dev"
} }
}, },
"conflict": { "conflict": {
"symplify\/astral": "<9.4.70", "symplify\/astral": "<10.0.0-beta1",
"symplify\/composer-json-manipulator": "<9.4.70", "symplify\/composer-json-manipulator": "<10.0.0-beta1",
"symplify\/easy-coding-standard": "<9.4.70", "symplify\/easy-coding-standard": "<10.0.0-beta1",
"symplify\/phpstan-rules": "<9.4.70", "symplify\/phpstan-rules": "<10.0.0-beta1",
"symplify\/easy-testing": "<9.4.70", "symplify\/easy-testing": "<10.0.0-beta1",
"symplify\/psr4-switcher": "<9.4.70", "symplify\/psr4-switcher": "<10.0.0-beta1",
"symplify\/rule-doc-generator-contracts": "<9.4.70", "symplify\/rule-doc-generator-contracts": "<10.0.0-beta1",
"symplify\/simple-php-doc-parser": "<9.4.70", "symplify\/simple-php-doc-parser": "<10.0.0-beta1",
"symplify\/php-config-printer": "<9.4.70", "symplify\/php-config-printer": "<10.0.0-beta1",
"symplify\/console-color-diff": "<9.4.70", "symplify\/console-color-diff": "<10.0.0-beta1",
"symplify\/autowire-array-parameter": "<9.4.70", "symplify\/autowire-array-parameter": "<10.0.0-beta1",
"symplify\/markdown-diff": "<9.4.70", "symplify\/markdown-diff": "<10.0.0-beta1",
"symplify\/amnesia": "<9.4.70", "symplify\/amnesia": "<10.0.0-beta1",
"symplify\/phpstan-extensions": "<9.4.70", "symplify\/phpstan-extensions": "<10.0.0-beta1",
"symplify\/rule-doc-generator": "<9.4.70", "symplify\/rule-doc-generator": "<10.0.0-beta1",
"symplify\/console-package-builder": "<9.4.70", "symplify\/vendor-patches": "<10.0.0-beta1",
"symplify\/vendor-patches": "<9.4.70", "symplify\/skipper": "<10.0.0-beta1",
"symplify\/skipper": "<9.4.70", "symplify\/smart-file-system": "<10.0.0-beta1",
"symplify\/smart-file-system": "<9.4.70", "symplify\/symfony-static-dumper": "<10.0.0-beta1",
"symplify\/easy-hydrator": "<9.4.70", "symplify\/git-wrapper": "<10.0.0-beta1",
"symplify\/symfony-static-dumper": "<9.4.70", "symplify\/monorepo-builder": "<10.0.0-beta1",
"symplify\/git-wrapper": "<9.4.70", "symplify\/config-transformer": "<10.0.0-beta1",
"symplify\/monorepo-builder": "<9.4.70", "symplify\/easy-ci": "<10.0.0-beta1",
"symplify\/config-transformer": "<9.4.70", "symplify\/coding-standard": "<10.0.0-beta1",
"symplify\/easy-ci": "<9.4.70", "symplify\/twig-phpstan-compiler": "<10.0.0-beta1",
"symplify\/coding-standard": "<9.4.70", "symplify\/latte-phpstan-compiler": "<10.0.0-beta1",
"symplify\/twig-phpstan-compiler": "<9.4.70", "symplify\/template-phpstan-compiler": "<10.0.0-beta1",
"symplify\/latte-phpstan-compiler": "<9.4.70", "symplify\/phpstan-latte-rules": "<10.0.0-beta1",
"symplify\/template-phpstan-compiler": "<9.4.70" "symplify\/phpstan-twig-rules": "<10.0.0-beta1"
}, },
"minimum-stability": "dev", "minimum-stability": "dev",
"prefer-stable": true "prefer-stable": true

View File

@ -1,9 +0,0 @@
<?php
declare (strict_types=1);
namespace Symplify\SymfonyPhpConfig\Exception;
use Exception;
final class ValueObjectException extends \Exception
{
}

View File

@ -10,6 +10,9 @@ use RectorPrefix20211102\Symfony\Component\DependencyInjection\Loader\Configurat
use RectorPrefix20211102\Symfony\Component\DependencyInjection\Loader\Configurator\ReferenceConfigurator; use RectorPrefix20211102\Symfony\Component\DependencyInjection\Loader\Configurator\ReferenceConfigurator;
use RectorPrefix20211102\Symfony\Component\DependencyInjection\Loader\Configurator\ServicesConfigurator; use RectorPrefix20211102\Symfony\Component\DependencyInjection\Loader\Configurator\ServicesConfigurator;
use Symplify\SymfonyPhpConfig\Reflection\ArgumentAndParameterFactory; use Symplify\SymfonyPhpConfig\Reflection\ArgumentAndParameterFactory;
/**
* @api
*/
final class ValueObjectInliner final class ValueObjectInliner
{ {
/** /**

View File

@ -6,11 +6,11 @@
"php": ">=8.0", "php": ">=8.0",
"symfony\/console": "^5.3|^6.0", "symfony\/console": "^5.3|^6.0",
"symfony\/dependency-injection": "^5.3|^6.0", "symfony\/dependency-injection": "^5.3|^6.0",
"symplify\/smart-file-system": "^9.5", "symplify\/smart-file-system": "^10.0",
"symplify\/composer-json-manipulator": "^9.5", "symplify\/composer-json-manipulator": "^10.0",
"symplify\/autowire-array-parameter": "^9.5", "symplify\/autowire-array-parameter": "^10.0",
"symplify\/package-builder": "^9.5", "symplify\/package-builder": "^10.0",
"symplify\/symplify-kernel": "^9.5", "symplify\/symplify-kernel": "^10.0",
"webmozart\/assert": "^1.10" "webmozart\/assert": "^1.10"
}, },
"require-dev": { "require-dev": {
@ -23,35 +23,37 @@
}, },
"extra": { "extra": {
"branch-alias": { "branch-alias": {
"dev-main": "9.5-dev" "dev-main": "10.0-dev"
} }
}, },
"conflict": { "conflict": {
"symplify\/astral": "<9.4.70", "symplify\/astral": "<10.0.0-beta1",
"symplify\/easy-coding-standard": "<9.4.70", "symplify\/easy-coding-standard": "<10.0.0-beta1",
"symplify\/phpstan-rules": "<9.4.70", "symplify\/phpstan-rules": "<10.0.0-beta1",
"symplify\/easy-testing": "<9.4.70", "symplify\/easy-testing": "<10.0.0-beta1",
"symplify\/psr4-switcher": "<9.4.70", "symplify\/psr4-switcher": "<10.0.0-beta1",
"symplify\/rule-doc-generator-contracts": "<9.4.70", "symplify\/rule-doc-generator-contracts": "<10.0.0-beta1",
"symplify\/symfony-php-config": "<9.4.70", "symplify\/symfony-php-config": "<10.0.0-beta1",
"symplify\/simple-php-doc-parser": "<9.4.70", "symplify\/simple-php-doc-parser": "<10.0.0-beta1",
"symplify\/php-config-printer": "<9.4.70", "symplify\/php-config-printer": "<10.0.0-beta1",
"symplify\/console-color-diff": "<9.4.70", "symplify\/console-color-diff": "<10.0.0-beta1",
"symplify\/markdown-diff": "<9.4.70", "symplify\/markdown-diff": "<10.0.0-beta1",
"symplify\/amnesia": "<9.4.70", "symplify\/amnesia": "<10.0.0-beta1",
"symplify\/phpstan-extensions": "<9.4.70", "symplify\/phpstan-extensions": "<10.0.0-beta1",
"symplify\/rule-doc-generator": "<9.4.70", "symplify\/rule-doc-generator": "<10.0.0-beta1",
"symplify\/vendor-patches": "<9.4.70", "symplify\/vendor-patches": "<10.0.0-beta1",
"symplify\/skipper": "<9.4.70", "symplify\/skipper": "<10.0.0-beta1",
"symplify\/symfony-static-dumper": "<9.4.70", "symplify\/symfony-static-dumper": "<10.0.0-beta1",
"symplify\/git-wrapper": "<9.4.70", "symplify\/git-wrapper": "<10.0.0-beta1",
"symplify\/monorepo-builder": "<9.4.70", "symplify\/monorepo-builder": "<10.0.0-beta1",
"symplify\/config-transformer": "<9.4.70", "symplify\/config-transformer": "<10.0.0-beta1",
"symplify\/easy-ci": "<9.4.70", "symplify\/easy-ci": "<10.0.0-beta1",
"symplify\/coding-standard": "<9.4.70", "symplify\/coding-standard": "<10.0.0-beta1",
"symplify\/twig-phpstan-compiler": "<9.4.70", "symplify\/twig-phpstan-compiler": "<10.0.0-beta1",
"symplify\/latte-phpstan-compiler": "<9.4.70", "symplify\/latte-phpstan-compiler": "<10.0.0-beta1",
"symplify\/template-phpstan-compiler": "<9.4.70" "symplify\/template-phpstan-compiler": "<10.0.0-beta1",
"symplify\/phpstan-latte-rules": "<10.0.0-beta1",
"symplify\/phpstan-twig-rules": "<10.0.0-beta1"
}, },
"minimum-stability": "dev", "minimum-stability": "dev",
"prefer-stable": true "prefer-stable": true