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/ParserFactory.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/ValueObjectInliner.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
{
$attributesOrder = $configuration[self::ATTRIBUTES_ORDER] ?? [];
\RectorPrefix20211102\Webmozart\Assert\Assert::isArray($attributesOrder);
\RectorPrefix20211102\Webmozart\Assert\Assert::allString($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';
/**
* @var class-string[]
* @var string[]
*/
private $safeTypes = [];
/**
* @var array<class-string, string[]>
* @var array<string, string[]>
*/
private $safeTypesToMethods = [];
/**
@ -145,6 +145,7 @@ CODE_SAMPLE
public function configure(array $configuration) : void
{
$safeTypes = $configuration[self::SAFE_TYPES] ?? [];
\RectorPrefix20211102\Webmozart\Assert\Assert::isArray($safeTypes);
\RectorPrefix20211102\Webmozart\Assert\Assert::allString($safeTypes);
$this->safeTypes = $safeTypes;
$safeTypesToMethods = $configuration[self::SAFE_TYPES_TO_METHODS] ?? [];

View File

@ -101,11 +101,12 @@ CODE_SAMPLE
return null;
}
/**
* @param array<string, mixed> $configuration
* @param array<string, FuncCallToMethodCall[]> $configuration
*/
public function configure(array $configuration) : void
{
$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);
$this->funcNameToMethodCallNames = $funcCallsToClassMethodCalls;
}

View File

@ -118,11 +118,12 @@ CODE_SAMPLE
return $node;
}
/**
* @param array<string, mixed> $configuration
* @param array<string, StaticCallToMethodCall[]> $configuration
*/
public function configure(array $configuration) : void
{
$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);
$this->staticCallsToMethodCalls = $staticCallsToMethodCalls;
}

View File

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

View File

@ -16,11 +16,11 @@ final class VersionResolver
/**
* @var string
*/
public const PACKAGE_VERSION = '954ffad1e58f9640e9581ee3a6bbbc6bbdb385fa';
public const PACKAGE_VERSION = '29b79786e2b798b0f1e6b0f3c7fba5c305e97dfb';
/**
* @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
{
$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;
}
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
*/

2
vendor/autoload.php vendored
View File

@ -4,4 +4,4 @@
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\\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\\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\\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\\RouteActionCallableRector' => $vendorDir . '/rector/rector-laravel/src/Rector/StaticCall/RouteActionCallableRector.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\\ValueObject\\AddArgumentDefaultValue' => $vendorDir . '/rector/rector-laravel/src/ValueObject/AddArgumentDefaultValue.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\\VarTypeParser' => $vendorDir . '/rector/rector-nette/src/Latte/Parser/VarTypeParser.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\\NodeAnalyzer\\ArrayDimFetchAnalyzer' => $vendorDir . '/rector/rector-nette/src/NodeAnalyzer/ArrayDimFetchAnalyzer.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\\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\\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\\ValueObjectInliner' => $vendorDir . '/symplify/symfony-php-config/src/ValueObjectInliner.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\\PHPUnit\\' => array($vendorDir . '/rector/rector-phpunit/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\\Doctrine\\' => array($vendorDir . '/rector/rector-doctrine/src'),
'Rector\\Core\\' => array($baseDir . '/src'),

View File

@ -2,7 +2,7 @@
// autoload_real.php @generated by Composer
class ComposerAutoloaderInitfe4e58c29112e82d9914ab75af40f1ae
class ComposerAutoloaderInitb0744a6adb43e682b2e28b6c0b5a9843
{
private static $loader;
@ -22,15 +22,15 @@ class ComposerAutoloaderInitfe4e58c29112e82d9914ab75af40f1ae
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__)));
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());
if ($useStaticLoader) {
require __DIR__ . '/autoload_static.php';
call_user_func(\Composer\Autoload\ComposerStaticInitfe4e58c29112e82d9914ab75af40f1ae::getInitializer($loader));
call_user_func(\Composer\Autoload\ComposerStaticInitb0744a6adb43e682b2e28b6c0b5a9843::getInitializer($loader));
} else {
$classMap = require __DIR__ . '/autoload_classmap.php';
if ($classMap) {
@ -42,19 +42,19 @@ class ComposerAutoloaderInitfe4e58c29112e82d9914ab75af40f1ae
$loader->register(true);
if ($useStaticLoader) {
$includeFiles = Composer\Autoload\ComposerStaticInitfe4e58c29112e82d9914ab75af40f1ae::$files;
$includeFiles = Composer\Autoload\ComposerStaticInitb0744a6adb43e682b2e28b6c0b5a9843::$files;
} else {
$includeFiles = require __DIR__ . '/autoload_files.php';
}
foreach ($includeFiles as $fileIdentifier => $file) {
composerRequirefe4e58c29112e82d9914ab75af40f1ae($fileIdentifier, $file);
composerRequireb0744a6adb43e682b2e28b6c0b5a9843($fileIdentifier, $file);
}
return $loader;
}
}
function composerRequirefe4e58c29112e82d9914ab75af40f1ae($fileIdentifier, $file)
function composerRequireb0744a6adb43e682b2e28b6c0b5a9843($fileIdentifier, $file)
{
if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
require $file;

View File

@ -4,7 +4,7 @@
namespace Composer\Autoload;
class ComposerStaticInitfe4e58c29112e82d9914ab75af40f1ae
class ComposerStaticInitb0744a6adb43e682b2e28b6c0b5a9843
{
public static $files = array (
'a4a119a56e50fbb293281d9a48007e0e' => __DIR__ . '/..' . '/symfony/polyfill-php80/bootstrap.php',
@ -129,6 +129,7 @@ class ComposerStaticInitfe4e58c29112e82d9914ab75af40f1ae
'Rector\\Nette\\' =>
array (
0 => __DIR__ . '/..' . '/rector/rector-nette/src',
1 => __DIR__ . '/..' . '/rector/rector-nette/packages',
),
'Rector\\Laravel\\' =>
array (
@ -2262,11 +2263,13 @@ class ComposerStaticInitfe4e58c29112e82d9914ab75af40f1ae
'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\\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\\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\\RouteActionCallableRector' => __DIR__ . '/..' . '/rector/rector-laravel/src/Rector/StaticCall/RouteActionCallableRector.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\\ValueObject\\AddArgumentDefaultValue' => __DIR__ . '/..' . '/rector/rector-laravel/src/ValueObject/AddArgumentDefaultValue.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\\VarTypeParser' => __DIR__ . '/..' . '/rector/rector-nette/src/Latte/Parser/VarTypeParser.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\\NodeAnalyzer\\ArrayDimFetchAnalyzer' => __DIR__ . '/..' . '/rector/rector-nette/src/NodeAnalyzer/ArrayDimFetchAnalyzer.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\\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\\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\\ValueObjectInliner' => __DIR__ . '/..' . '/symplify/symfony-php-config/src/ValueObjectInliner.php',
'UnhandledMatchError' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php',
@ -3539,9 +3554,9 @@ class ComposerStaticInitfe4e58c29112e82d9914ab75af40f1ae
public static function getInitializer(ClassLoader $loader)
{
return \Closure::bind(function () use ($loader) {
$loader->prefixLengthsPsr4 = ComposerStaticInitfe4e58c29112e82d9914ab75af40f1ae::$prefixLengthsPsr4;
$loader->prefixDirsPsr4 = ComposerStaticInitfe4e58c29112e82d9914ab75af40f1ae::$prefixDirsPsr4;
$loader->classMap = ComposerStaticInitfe4e58c29112e82d9914ab75af40f1ae::$classMap;
$loader->prefixLengthsPsr4 = ComposerStaticInitb0744a6adb43e682b2e28b6c0b5a9843::$prefixLengthsPsr4;
$loader->prefixDirsPsr4 = ComposerStaticInitb0744a6adb43e682b2e28b6c0b5a9843::$prefixDirsPsr4;
$loader->classMap = ComposerStaticInitb0744a6adb43e682b2e28b6c0b5a9843::$classMap;
}, 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-----
iQIzBAABCgAdFiEE0yaA1ZV9xxFr4pwUzxoQjQ565yAFAmF/i1sACgkQzxoQjQ56
5yDALhAAhsbjCJLAUrakUztJRtsze7ka9fdbE9tPzTcY79AauMrFp/YIW5v+FrlE
O7+uvxUcNLbBPB/+v4mOIRmwFvJFjttBEKNZRviX/M3GXx/eeKqccXbkmjn/eYhu
1l34QRdROk5cdB9KD0q47wbSWcZ4TN1JyiBxqCyE+vyBDS8EnNjSOoSf+PaVTVyt
01sDLXZdokPF7TyeHzy0T4ye9nPyPe6//yeZkmpy40+ucJI4Y3VlNCycu5JFXt6v
2fYSFawgkPqpm9Oy3gNSL7qm8xMYI9mi3MqXmu+RYjFl3hTsVTYXiEWGeSHZ9lKO
BtzQfH6vhfeziZKRR7/7hCrzqz2s3v0WLdatkYeG9m2qtMNf6M7I3f0MwdMdCgb8
hZbKFUkHFWq2cFOtz+3ZKlvpbxnXkmnGapdyNVGn5eMkr4HdmrDic/IktHp+XWub
6xZMfHGz/fcuyLAE4XgPuVxx41wYYw2minmsgg2gsx2imTHM4r/ILezftxHIm0zG
Bl4PjxVrXa9WPTibdjd+5Vqat6/9mjCoMc131kDIwqjLmZT2jCXA4SoM8wi6VYkw
UdGumXXklSrN5qdxCpaEMpRMFIdVaiKyhB9MoQfeQ2hnPYA7blgE+htKT26E0vWC
dmtYQm47CKXCWPvrPKQnn0HYgOft655lde1zu2sFjQ5u+QzS9h8=
=PbiR
iQIzBAABCgAdFiEE0yaA1ZV9xxFr4pwUzxoQjQ565yAFAmGBEhoACgkQzxoQjQ56
5yCNQw//Z/UBLNj+Ximjhf0PYDdgs8po0dCK+XMM6YOS4XZDuOfVs/OxtpqK6OtR
HFVA6PExlcw98zBlfragorrYd8D9LtBjDkxexPXhIYpW+Gf9tziMYfLk55ovc/NK
FGA5AoeYVi3e8CMssL/i/OQYEfE18yZ3rydWX8BmomGn0NFwFynx/q174UniggBY
bDdtZ6m0t6vEbx6e3F3tIlrUrYRcm2+RZO05BiQ1sx5o99fa2L9OJLUpecEF+myk
Syxj246ABACRqHPkUHD2MIfuqT4BPbieJKOMYlGT7kMBT3xu931siK9axi5PveyA
KONSG1nUqVKo8dk5dYcW0UoYtna98o3CA1obqJza71xyOyKn/d8nOCR7VCrU8Uag
7SWxcQiU5BJL5Xi6XgWD3tqur//RIrC88xC7OgGWCf6SlXZ7zl+teOTr5sCV4U3g
FsulUqNa7Bdv4yQZQ2/Y2gRuPZJUYppy6HzlLvLyd9oh9YMrGCT5Hur6TZr+LbLC
ubs9k7Mdp6ZpvZ2mGWJXnzAdPv40A351GX6yYEZSDlGa3gnbslreJEJZlXWri3b6
8cN3NlozoHARCnkm1sXIIDG0VQETYqsT424oRVcGigtx+pN6QVOXWY9uK998Gb9X
qkJSGKAQiGqZLisqO+z6rJVOh4tNIqhW0Vcnp3pXhet6UfC/KX4=
=PxoU
-----END PGP SIGNATURE-----

View File

@ -9,7 +9,7 @@ namespace Rector\RectorInstaller;
*/
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()
{
}

View File

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

View File

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

View File

@ -9,12 +9,14 @@
"require-dev": {
"rector\/rector-src": "dev-main",
"phpunit\/phpunit": "^9.5",
"symplify\/phpstan-rules": "^9.4",
"symplify\/phpstan-extensions": "^9.4",
"symplify\/easy-coding-standard": "^9.4",
"symplify\/rule-doc-generator": "^9.4",
"rector\/phpstan-rules": "^0.4.4",
"phpstan\/extension-installer": "^1.1"
"phpstan\/phpstan": "^1.0",
"symplify\/phpstan-rules": "^10.0",
"symplify\/phpstan-extensions": "^10.0",
"symplify\/easy-coding-standard": "^10.0",
"symplify\/rule-doc-generator": "^10.0",
"rector\/phpstan-rules": "^0.4.8",
"phpstan\/extension-installer": "^1.1",
"phpstan\/phpstan-webmozart-assert": "^1.0"
},
"autoload": {
"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
@ -294,6 +294,41 @@ Change minutes argument to seconds in `Illuminate\Contracts\Cache\Store` and Ill
<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
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\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 Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
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
'*/Source/*',
'*/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(__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\LevelSetList::UP_TO_PHP_80);
$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) {
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
{

View File

@ -15,6 +15,7 @@ use Rector\Core\Rector\AbstractRector;
use RectorPrefix20211102\Symplify\Astral\ValueObject\NodeBuilder\PropertyBuilder;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
use RectorPrefix20211102\Webmozart\Assert\Assert;
/**
* @see https://github.com/laravel/framework/pull/32856
*
@ -80,6 +81,9 @@ CODE_SAMPLE
return null;
}
$dates = $this->valueResolver->getValue($datesPropertyProperty->default);
if (!\is_array($dates)) {
return null;
}
if ($dates === []) {
return null;
}
@ -96,6 +100,7 @@ CODE_SAMPLE
$casts = $this->valueResolver->getValue($castsPropertyProperty->default);
// exclude attributes added in $casts
$missingDates = \array_diff($dates, \array_keys($casts));
\RectorPrefix20211102\Webmozart\Assert\Assert::allString($missingDates);
foreach ($missingDates as $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 Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
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/8.x/database-testing#applying-states
@ -52,6 +53,7 @@ CODE_SAMPLE
}
$var = $node->var;
$states = $this->getStatesFromArgs($node->args);
\RectorPrefix20211102\Webmozart\Assert\Assert::allString($states);
foreach ($states as $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\StaticCall;
use PhpParser\Node\Identifier;
use PHPStan\Analyser\Scope;
use PHPStan\Reflection\Php\PhpMethodReflection;
use Rector\Core\Contract\Rector\ConfigurableRectorInterface;
use Rector\Core\Rector\AbstractRector;
@ -18,6 +19,7 @@ use Rector\NodeTypeResolver\Node\AttributeKey;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\ConfiguredCodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
use Symplify\SmartFileSystem\SmartFileInfo;
use RectorPrefix20211102\Webmozart\Assert\Assert;
/**
* @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
*/
private $namespace = 'App\\Http\\Controllers';
private const DEFAULT_NAMESPACE = 'App\\Http\\Controllers';
/**
* @var string
*/
private $namespace = self::DEFAULT_NAMESPACE;
/**
* @var array<string, string>
*/
@ -87,11 +93,15 @@ CODE_SAMPLE
return null;
}
$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) {
return null;
}
$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);
if (!$phpMethodReflection instanceof \PHPStan\Reflection\Php\PhpMethodReflection) {
return null;
@ -99,22 +109,29 @@ CODE_SAMPLE
$node->args[$position]->value = $this->nodeFactory->createArray([$this->nodeFactory->createClassConstReference($segments[0]), $segments[1]]);
return $node;
}
/**
* @param array<string, string|mixed[]> $configuration
*/
public function configure(array $configuration) : void
{
$this->routes = $configuration[self::ROUTES] ?? [];
if (isset($configuration[self::NAMESPACE])) {
$this->namespace = $configuration[self::NAMESPACE];
}
$routes = $configuration[self::ROUTES] ?? [];
\RectorPrefix20211102\Webmozart\Assert\Assert::allString($routes);
\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
* @param mixed $action
*/
private function resolveControllerFromAction($action) : ?array
{
if (!$this->isActionString($action)) {
return null;
}
/** @var string $action */
$segments = \explode('@', $action);
if (\count($segments) !== 2) {
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",
"ext-xml": "*",
"danielstjules\/stringy": "^3.1",
"rector\/rector-phpunit": "^0.11"
"rector\/rector-phpunit": "^0.11.15"
},
"require-dev": {
"rector\/rector-src": "dev-main",
"phpunit\/phpunit": "^9.5",
"symplify\/phpstan-rules": "^9.4",
"symplify\/phpstan-extensions": "^9.4",
"symplify\/easy-coding-standard": "^9.4",
"symplify\/phpstan-extensions": "^10.0",
"symplify\/phpstan-rules": "^10.0",
"symplify\/easy-coding-standard": "^10.0",
"symplify\/monorepo-builder": "^10.0",
"phpstan\/phpstan-nette": "^1.0",
"nette\/application": "^3.1",
"nette\/di": "^3.0",
"nette\/forms": "3.0.*",
"symplify\/rule-doc-generator": "^9.4",
"symplify\/rule-doc-generator": "^10.0",
"phpstan\/extension-installer": "^1.1",
"rector\/phpstan-rules": "^0.4.4"
"rector\/phpstan-rules": "^0.4.7",
"phpstan\/phpstan-webmozart-assert": "^1.0"
},
"autoload": {
"psr-4": {
"Rector\\Nette\\": "src"
"Rector\\Nette\\": [
"src",
"packages"
]
}
},
"autoload-dev": {
@ -37,6 +42,7 @@
]
},
"scripts": {
"release": "vendor\/bin\/monorepo-builder release patch --ansi",
"phpstan": "vendor\/bin\/phpstan analyse --ansi --error-format symplify",
"check-cs": "vendor\/bin\/ecs check --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 Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
return static function (\Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator $containerConfigurator) : void {
$containerConfigurator->import(__DIR__ . '/packages.php');
$services = $containerConfigurator->services();
$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']);

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;
use Rector\Core\Configuration\Option;
use Rector\Nette\NodeAnalyzer\BinaryOpAnalyzer;
use Rector\PHPUnit\NodeAnalyzer\TestsNodeAnalyzer;
use Rector\Php55\Rector\String_\StringClassNameToClassConstantRector;
use Rector\Set\ValueObject\LevelSetList;
use Rector\Set\ValueObject\SetList;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
return static function (\Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator $containerConfigurator) : void {
@ -17,10 +17,10 @@ return static function (\Symfony\Component\DependencyInjection\Loader\Configurat
'*/Source/*',
'*/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
$containerConfigurator->import(__DIR__ . '/config/config.php');
$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\LevelSetList::UP_TO_PHP_80);
$containerConfigurator->import(\Rector\Set\ValueObject\SetList::DEAD_CODE);
};

View File

@ -3,8 +3,16 @@
declare (strict_types=1);
namespace Rector\Nette\Contract\Rector;
use RectorPrefix20211102\Nette\Neon\Node;
use 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\Configuration;
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
{
/**
* @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[]
*/
@ -16,8 +31,11 @@ final class NeonFileProcessor implements \Rector\Core\Contract\Processor\FilePro
/**
* @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;
}
/**
@ -27,10 +45,19 @@ final class NeonFileProcessor implements \Rector\Core\Contract\Processor\FilePro
public function process($file, $configuration) : void
{
$fileContent = $file->getFileContent();
$neonNode = $this->neonParser->parseString($fileContent);
$neonNodeTraverser = $this->neonNodeTraverserFactory->create();
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

View File

@ -6,6 +6,7 @@ namespace Rector\Nette\FormControlTypeResolver;
use PhpParser\Node;
use PhpParser\Node\Expr\MethodCall;
use PHPStan\Type\TypeWithClassName;
use Rector\Core\Exception\ShouldNotHappenException;
use Rector\Core\PhpParser\AstResolver;
use Rector\Core\PhpParser\Node\Value\ValueResolver;
use Rector\Core\ValueObject\MethodName;
@ -87,6 +88,10 @@ final class GetComponentMethodCallFormControlTypeResolver implements \Rector\Net
private function createCreateComponentMethodName(\PhpParser\Node\Expr\MethodCall $methodCall) : string
{
$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\Nette\Kdyby\ValueObject\VariableWithType;
use Rector\NodeTypeResolver\NodeTypeResolver;
use Rector\PHPStanStaticTypeMapper\Enum\TypeKind;
use Rector\StaticTypeMapper\StaticTypeMapper;
final class VariableWithTypesFactory
{

View File

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

View File

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

View File

@ -104,6 +104,9 @@ CODE_SAMPLE
$node->args = [];
$eventReference = $oldArgs[0]->value;
$classAndStaticProperty = $this->valueResolver->getValue($eventReference, \true);
if (!\is_string($classAndStaticProperty)) {
return null;
}
$eventClassName = $this->eventClassNaming->createEventClassNameFromClassPropertyReference($classAndStaticProperty);
$args = $this->createNewArgs($oldArgs);
$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();
}
$currentStatement = $parent->getAttribute(\Rector\NodeTypeResolver\Node\AttributeKey::CURRENT_STATEMENT);
if (!$currentStatement instanceof \PhpParser\Node) {
throw new \Rector\Core\Exception\ShouldNotHappenException();
}
}
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
{
$componentName = $this->valueResolver->getValue($shortControlString);
if (!\is_string($componentName)) {
throw new \Rector\Core\Exception\ShouldNotHappenException();
}
$componentName = \ucfirst($componentName);
$methodName = \sprintf('createComponent%s', $componentName);
$calledOnType = $scope->getType($expr);

View File

@ -113,6 +113,9 @@ CODE_SAMPLE
$assign = $this->createCoalesceAssign($node);
$currentStmt = $node->getAttribute(\Rector\NodeTypeResolver\Node\AttributeKey::CURRENT_STATEMENT);
$positionNode = $currentStmt ?? $node;
if (!$positionNode instanceof \PhpParser\Node) {
throw new \Rector\Core\Exception\ShouldNotHappenException();
}
$this->nodesToAddCollector->addNodeBeforeNode($assign, $positionNode);
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\Property;
use Rector\BetterPhpDocParser\PhpDocManipulator\PhpDocTagRemover;
use Rector\Core\Exception\ShouldNotHappenException;
use Rector\Core\Rector\AbstractRector;
use Rector\Core\ValueObject\MethodName;
use Rector\Core\ValueObject\PhpVersionFeature;
@ -105,6 +106,9 @@ CODE_SAMPLE
return null;
}
$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) {
$this->removeInjectAnnotation($injectProperty);
$this->changePropertyVisibility($injectProperty);

View File

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

View File

@ -82,17 +82,20 @@ CODE_SAMPLE
}
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) {
$refactoredFuncCall = $this->refactorFuncCall($identical->left);
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) {
$refactoredFuncCall = $this->refactorFuncCall($identical->right);
if ($refactoredFuncCall !== null && $this->valueResolver->isValue($identical->left, 1)) {
return $this->createBoolCast($parentNode, $refactoredFuncCall);
return $this->createBoolCast($parent, $refactoredFuncCall);
}
}
return null;

View File

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

View File

@ -103,7 +103,7 @@ CODE_SAMPLE
}
$arrayDimFetch = new \PhpParser\Node\Expr\ArrayDimFetch($methodCall->var, $key);
$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);
if (\count($methodCalls) > 1) {
$controlName = $this->resolveControlName($methodCall);

View File

@ -3,8 +3,9 @@
declare (strict_types=1);
namespace Rector\Nette\Rector\Neon;
use RectorPrefix20211102\Nette\Utils\Strings;
use RectorPrefix20211102\Nette\Neon\Node;
use Rector\Nette\Contract\Rector\NeonRectorInterface;
use Rector\Nette\NeonParser\Node\Service_\SetupMethodCall;
use Rector\Renaming\Collector\MethodCallRenameCollector;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
@ -39,19 +40,29 @@ services:
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) {
$oldObjectType = $methodCallRename->getOldObjectType();
$objectClassName = $oldObjectType->getClassName();
$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 (!\is_a($node->className, $methodCallRename->getClass(), \true)) {
continue;
}
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;
use PhpParser\Node;
use PhpParser\Node\Stmt\Class_;
use PhpParser\Node\Stmt\Property;
use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfo;
use Rector\BetterPhpDocParser\PhpDocManipulator\PhpDocTagRemover;
use Rector\Core\Exception\ShouldNotHappenException;
use Rector\Core\Rector\AbstractRector;
use Rector\Core\ValueObject\PhpVersionFeature;
use Rector\FamilyTree\NodeAnalyzer\PropertyUsageAnalyzer;
@ -102,6 +104,9 @@ CODE_SAMPLE
}
$this->changePropertyVisibility($property);
$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);
$propertyType = $this->nodeTypeResolver->getType($property);
$propertyMetadata = new \Rector\PostRector\ValueObject\PropertyMetadata($propertyName, $propertyType, $property->flags);

View File

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

View File

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

View File

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

View File

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

View File

@ -5,6 +5,7 @@ namespace Rector\Symfony\Bridge\NodeAnalyzer;
use PhpParser\Node;
use PhpParser\Node\Stmt\ClassMethod;
use PHPStan\Analyser\Scope;
use Rector\NodeCollector\ScopeResolver\ParentClassScopeResolver;
use Rector\NodeTypeResolver\Node\AttributeKey;
final class ControllerMethodAnalyzer
@ -26,6 +27,9 @@ final class ControllerMethodAnalyzer
return \false;
}
$scope = $node->getAttribute(\Rector\NodeTypeResolver\Node\AttributeKey::SCOPE);
if (!$scope instanceof \PHPStan\Analyser\Scope) {
return \false;
}
$parentClassName = (string) $this->parentClassScopeResolver->resolveParentClassName($scope);
if (\substr_compare($parentClassName, 'Controller', -\strlen('Controller')) === 0) {
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)) {
spl_autoload_call('RectorPrefix20211102\AutoloadIncluder');
}
if (!class_exists('ComposerAutoloaderInitfe4e58c29112e82d9914ab75af40f1ae', false) && !interface_exists('ComposerAutoloaderInitfe4e58c29112e82d9914ab75af40f1ae', false) && !trait_exists('ComposerAutoloaderInitfe4e58c29112e82d9914ab75af40f1ae', false)) {
spl_autoload_call('RectorPrefix20211102\ComposerAutoloaderInitfe4e58c29112e82d9914ab75af40f1ae');
if (!class_exists('ComposerAutoloaderInitb0744a6adb43e682b2e28b6c0b5a9843', false) && !interface_exists('ComposerAutoloaderInitb0744a6adb43e682b2e28b6c0b5a9843', false) && !trait_exists('ComposerAutoloaderInitb0744a6adb43e682b2e28b6c0b5a9843', false)) {
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)) {
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());
}
}
if (!function_exists('composerRequirefe4e58c29112e82d9914ab75af40f1ae')) {
function composerRequirefe4e58c29112e82d9914ab75af40f1ae() {
return \RectorPrefix20211102\composerRequirefe4e58c29112e82d9914ab75af40f1ae(...func_get_args());
if (!function_exists('composerRequireb0744a6adb43e682b2e28b6c0b5a9843')) {
function composerRequireb0744a6adb43e682b2e28b6c0b5a9843() {
return \RectorPrefix20211102\composerRequireb0744a6adb43e682b2e28b6c0b5a9843(...func_get_args());
}
}
if (!function_exists('parseArgs')) {

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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