Updated Rector to commit 5f4edd9230355cadc311ba8e8954fb9ae5bdc849

5f4edd9230 Remove NonVariableToVariableOnFunctionCallRector, should be handled manually as might need attention (#3357)
This commit is contained in:
Tomas Votruba 2023-02-07 22:56:24 +00:00
parent 0a33500839
commit 6481c8dccc
15 changed files with 50 additions and 313 deletions

View File

@ -11,7 +11,6 @@ use Rector\Php70\Rector\ClassMethod\Php4ConstructorRector;
use Rector\Php70\Rector\FuncCall\CallUserMethodRector;
use Rector\Php70\Rector\FuncCall\EregToPregMatchRector;
use Rector\Php70\Rector\FuncCall\MultiDirnameRector;
use Rector\Php70\Rector\FuncCall\NonVariableToVariableOnFunctionCallRector;
use Rector\Php70\Rector\FuncCall\RandomFunctionRector;
use Rector\Php70\Rector\FuncCall\RenameMktimeWithoutArgsToTimeRector;
use Rector\Php70\Rector\FunctionLike\ExceptionHandlerTypehintRector;
@ -24,24 +23,25 @@ use Rector\Php70\Rector\Ternary\TernaryToNullCoalescingRector;
use Rector\Php70\Rector\Ternary\TernaryToSpaceshipRector;
use Rector\Php70\Rector\Variable\WrapVariableVariableNameInCurlyBracesRector;
return static function (RectorConfig $rectorConfig) : void {
$rectorConfig->rule(Php4ConstructorRector::class);
$rectorConfig->rule(TernaryToNullCoalescingRector::class);
$rectorConfig->rule(RandomFunctionRector::class);
$rectorConfig->rule(ExceptionHandlerTypehintRector::class);
$rectorConfig->rule(MultiDirnameRector::class);
$rectorConfig->rule(ListSplitStringRector::class);
$rectorConfig->rule(EmptyListRector::class);
# be careful, run this just once, since it can keep swapping order back and forth
$rectorConfig->rule(ListSwapArrayOrderRector::class);
$rectorConfig->rule(CallUserMethodRector::class);
$rectorConfig->rule(EregToPregMatchRector::class);
$rectorConfig->rule(ReduceMultipleDefaultSwitchRector::class);
$rectorConfig->rule(TernaryToSpaceshipRector::class);
$rectorConfig->rule(WrapVariableVariableNameInCurlyBracesRector::class);
$rectorConfig->rule(IfToSpaceshipRector::class);
$rectorConfig->rule(StaticCallOnNonStaticToInstanceCallRector::class);
$rectorConfig->rule(ThisCallOnStaticMethodToStaticCallRector::class);
$rectorConfig->rule(BreakNotInLoopOrSwitchToReturnRector::class);
$rectorConfig->rule(RenameMktimeWithoutArgsToTimeRector::class);
$rectorConfig->rule(NonVariableToVariableOnFunctionCallRector::class);
$rectorConfig->rules([
Php4ConstructorRector::class,
TernaryToNullCoalescingRector::class,
RandomFunctionRector::class,
ExceptionHandlerTypehintRector::class,
MultiDirnameRector::class,
ListSplitStringRector::class,
EmptyListRector::class,
// be careful, run this just once, since it can keep swapping order back and forth
ListSwapArrayOrderRector::class,
CallUserMethodRector::class,
EregToPregMatchRector::class,
ReduceMultipleDefaultSwitchRector::class,
TernaryToSpaceshipRector::class,
WrapVariableVariableNameInCurlyBracesRector::class,
IfToSpaceshipRector::class,
StaticCallOnNonStaticToInstanceCallRector::class,
ThisCallOnStaticMethodToStaticCallRector::class,
BreakNotInLoopOrSwitchToReturnRector::class,
RenameMktimeWithoutArgsToTimeRector::class,
]);
};

View File

@ -1,4 +1,4 @@
# 415 Rules Overview
# 414 Rules Overview
<br>
@ -34,7 +34,7 @@
- [Php56](#php56) (2)
- [Php70](#php70) (19)
- [Php70](#php70) (18)
- [Php71](#php71) (9)
@ -4917,19 +4917,6 @@ Changes multiple `dirname()` calls to one with nesting level
<br>
### NonVariableToVariableOnFunctionCallRector
Transform non variable like arguments to variable where a function or method expects an argument passed by reference
- class: [`Rector\Php70\Rector\FuncCall\NonVariableToVariableOnFunctionCallRector`](../rules/Php70/Rector/FuncCall/NonVariableToVariableOnFunctionCallRector.php)
```diff
-reset(a());
+$a = a(); reset($a);
```
<br>
### Php4ConstructorRector
Changes PHP 4 style constructor to __construct.

View File

@ -3,8 +3,8 @@
declare (strict_types=1);
namespace Rector\NodeNestingScope;
use PhpParser\Node;
use PhpParser\Node\Expr\Closure;
use PhpParser\Node\Expr\Variable;
use PhpParser\Node\Stmt\Class_;
use PhpParser\Node\Stmt\ClassMethod;
use PhpParser\Node\Stmt\Function_;
@ -24,8 +24,8 @@ final class ParentScopeFinder
/**
* @return \PhpParser\Node\Stmt\ClassMethod|\PhpParser\Node\Stmt\Function_|\PhpParser\Node\Stmt\Class_|\PhpParser\Node\Stmt\Namespace_|\PhpParser\Node\Expr\Closure|null
*/
public function find(Node $node)
public function find(Variable $variable)
{
return $this->betterNodeFinder->findParentByTypes($node, [Closure::class, Function_::class, ClassMethod::class, Class_::class, Namespace_::class]);
return $this->betterNodeFinder->findParentByTypes($variable, [Closure::class, Function_::class, ClassMethod::class, Class_::class, Namespace_::class]);
}
}

View File

@ -19,9 +19,6 @@ use Rector\NodeTypeResolver\NodeTypeResolver;
use Rector\StaticTypeMapper\ValueObject\Type\AliasedObjectType;
use Rector\StaticTypeMapper\ValueObject\Type\SelfObjectType;
/**
* @deprecated
* @todo merge with very similar logic in
* @see VariableNaming
* @see \Rector\Tests\Naming\Naming\PropertyNamingTest
*/
final class PropertyNaming

View File

@ -49,6 +49,9 @@ final class VariableNaming
$this->nodeTypeResolver = $nodeTypeResolver;
$this->assignVariableNameResolvers = $assignVariableNameResolvers;
}
/**
* @api
*/
public function resolveFromNodeWithScopeCountAndFallbackName(Expr $expr, MutatingScope $mutatingScope, string $fallbackName) : string
{
$name = $this->resolveFromNode($expr);
@ -79,9 +82,6 @@ final class VariableNaming
}
return $valueName;
}
/**
* @api
*/
public function resolveFromFuncCallFirstArgumentWithSuffix(FuncCall $funcCall, string $suffix, string $fallbackName, ?Scope $scope) : string
{
$bareName = $this->resolveBareFuncCallArgumentName($funcCall, $fallbackName, $suffix);

View File

@ -1,194 +0,0 @@
<?php
declare (strict_types=1);
namespace Rector\Php70\Rector\FuncCall;
use PhpParser\Node;
use PhpParser\Node\Arg;
use PhpParser\Node\Expr;
use PhpParser\Node\Expr\ArrayDimFetch;
use PhpParser\Node\Expr\Assign;
use PhpParser\Node\Expr\AssignOp;
use PhpParser\Node\Expr\AssignRef;
use PhpParser\Node\Expr\Closure;
use PhpParser\Node\Expr\FuncCall;
use PhpParser\Node\Expr\MethodCall;
use PhpParser\Node\Expr\PropertyFetch;
use PhpParser\Node\Expr\StaticCall;
use PhpParser\Node\Expr\StaticPropertyFetch;
use PhpParser\Node\Expr\Variable;
use PhpParser\Node\Stmt;
use PhpParser\Node\Stmt\Class_;
use PhpParser\Node\Stmt\ClassMethod;
use PhpParser\Node\Stmt\Function_;
use PhpParser\Node\Stmt\Namespace_;
use PHPStan\Analyser\MutatingScope;
use PHPStan\Analyser\Scope;
use PHPStan\Reflection\ParameterReflection;
use PHPStan\Type\MixedType;
use Rector\Core\NodeAnalyzer\ArgsAnalyzer;
use Rector\Core\Rector\AbstractRector;
use Rector\Core\Reflection\ReflectionResolver;
use Rector\Core\ValueObject\PhpVersionFeature;
use Rector\Naming\Naming\VariableNaming;
use Rector\NodeNestingScope\ParentScopeFinder;
use Rector\NodeTypeResolver\Node\AttributeKey;
use Rector\Php70\ValueObject\VariableAssignPair;
use Rector\PostRector\Collector\NodesToAddCollector;
use Rector\VersionBonding\Contract\MinPhpVersionInterface;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
* @changelog https://www.php.net/manual/en/migration70.incompatible.php
*
* @see \Rector\Tests\Php70\Rector\FuncCall\NonVariableToVariableOnFunctionCallRector\NonVariableToVariableOnFunctionCallRectorTest
*/
final class NonVariableToVariableOnFunctionCallRector extends AbstractRector implements MinPhpVersionInterface
{
/**
* @readonly
* @var \Rector\Naming\Naming\VariableNaming
*/
private $variableNaming;
/**
* @readonly
* @var \Rector\NodeNestingScope\ParentScopeFinder
*/
private $parentScopeFinder;
/**
* @readonly
* @var \Rector\Core\Reflection\ReflectionResolver
*/
private $reflectionResolver;
/**
* @readonly
* @var \Rector\Core\NodeAnalyzer\ArgsAnalyzer
*/
private $argsAnalyzer;
/**
* @readonly
* @var \Rector\PostRector\Collector\NodesToAddCollector
*/
private $nodesToAddCollector;
public function __construct(VariableNaming $variableNaming, ParentScopeFinder $parentScopeFinder, ReflectionResolver $reflectionResolver, ArgsAnalyzer $argsAnalyzer, NodesToAddCollector $nodesToAddCollector)
{
$this->variableNaming = $variableNaming;
$this->parentScopeFinder = $parentScopeFinder;
$this->reflectionResolver = $reflectionResolver;
$this->argsAnalyzer = $argsAnalyzer;
$this->nodesToAddCollector = $nodesToAddCollector;
}
public function getRuleDefinition() : RuleDefinition
{
return new RuleDefinition('Transform non variable like arguments to variable where a function or method expects an argument passed by reference', [new CodeSample('reset(a());', '$a = a(); reset($a);')]);
}
public function provideMinPhpVersion() : int
{
return PhpVersionFeature::VARIABLE_ON_FUNC_CALL;
}
/**
* @return array<class-string<Node>>
*/
public function getNodeTypes() : array
{
return [FuncCall::class, MethodCall::class, StaticCall::class];
}
/**
* @param FuncCall|MethodCall|StaticCall $node
*/
public function refactor(Node $node) : ?Node
{
$arguments = $this->getNonVariableArguments($node);
if ($arguments === []) {
return null;
}
$scopeNode = $this->parentScopeFinder->find($node);
if (!$scopeNode instanceof Node) {
return null;
}
$currentScope = $scopeNode->getAttribute(AttributeKey::SCOPE);
if (!$currentScope instanceof MutatingScope) {
return null;
}
foreach ($arguments as $key => $argument) {
if (!$node->args[$key] instanceof Arg) {
continue;
}
$replacements = $this->getReplacementsFor($argument, $currentScope, $scopeNode);
$currentStmt = $this->betterNodeFinder->resolveCurrentStatement($node);
if (!$currentStmt instanceof Stmt) {
continue;
}
$this->nodesToAddCollector->addNodeBeforeNode($replacements->getAssign(), $currentStmt);
$node->args[$key]->value = $replacements->getVariable();
// add variable name to scope, so we prevent duplication of new variable of the same name
$currentScope = $currentScope->assignExpression($replacements->getVariable(), $currentScope->getType($replacements->getVariable()));
}
$scopeNode->setAttribute(AttributeKey::SCOPE, $currentScope);
return $node;
}
/**
* @return Expr[]
* @param \PhpParser\Node\Expr\FuncCall|\PhpParser\Node\Expr\MethodCall|\PhpParser\Node\Expr\StaticCall $call
*/
private function getNonVariableArguments($call) : array
{
$arguments = [];
$functionLikeReflection = $this->reflectionResolver->resolveFunctionLikeReflectionFromCall($call);
if ($functionLikeReflection === null) {
return [];
}
foreach ($functionLikeReflection->getVariants() as $parametersAcceptor) {
/** @var ParameterReflection $parameterReflection */
foreach ($parametersAcceptor->getParameters() as $key => $parameterReflection) {
// omitted optional parameter
if (!$this->argsAnalyzer->isArgInstanceInArgsPosition($call->args, $key)) {
continue;
}
if ($parameterReflection->passedByReference()->no()) {
continue;
}
/** @var Arg $arg */
$arg = $call->args[$key];
$argument = $arg->value;
if ($this->isVariableLikeNode($argument)) {
continue;
}
$arguments[$key] = $argument;
}
}
return $arguments;
}
/**
* @param \PhpParser\Node\Expr\Closure|\PhpParser\Node\Stmt\Class_|\PhpParser\Node\Stmt\ClassMethod|\PhpParser\Node\Stmt\Function_|\PhpParser\Node\Stmt\Namespace_ $scopeNode
*/
private function getReplacementsFor(Expr $expr, MutatingScope $scope, $scopeNode) : VariableAssignPair
{
if ($this->isAssign($expr)) {
/** @var Assign|AssignRef|AssignOp $expr */
if ($this->isVariableLikeNode($expr->var)) {
return new VariableAssignPair($expr->var, $expr);
}
}
$variableName = $this->variableNaming->resolveFromNodeWithScopeCountAndFallbackName($expr, $scope, 'tmp');
$variable = new Variable($variableName);
// add a new scope with this variable
$mutatingScope = $scope->assignExpression($variable, new MixedType());
$scopeNode->setAttribute(AttributeKey::SCOPE, $mutatingScope);
return new VariableAssignPair($variable, new Assign($variable, $expr));
}
private function isVariableLikeNode(Expr $expr) : bool
{
return $expr instanceof Variable || $expr instanceof ArrayDimFetch || $expr instanceof PropertyFetch || $expr instanceof StaticPropertyFetch;
}
private function isAssign(Expr $expr) : bool
{
if ($expr instanceof Assign) {
return \true;
}
if ($expr instanceof AssignRef) {
return \true;
}
return $expr instanceof AssignOp;
}
}

View File

@ -1,49 +0,0 @@
<?php
declare (strict_types=1);
namespace Rector\Php70\ValueObject;
use PhpParser\Node;
use PhpParser\Node\Expr\ArrayDimFetch;
use PhpParser\Node\Expr\Assign;
use PhpParser\Node\Expr\AssignOp;
use PhpParser\Node\Expr\AssignRef;
use PhpParser\Node\Expr\PropertyFetch;
use PhpParser\Node\Expr\StaticPropertyFetch;
use PhpParser\Node\Expr\Variable;
final class VariableAssignPair
{
/**
* @var Variable|ArrayDimFetch|PropertyFetch|StaticPropertyFetch
* @readonly
*/
private $variable;
/**
* @var Assign|AssignOp|AssignRef
* @readonly
*/
private $assign;
/**
* @param Variable|ArrayDimFetch|PropertyFetch|StaticPropertyFetch $variable
* @param Assign|AssignOp|AssignRef $assign
*/
public function __construct(Node $variable, Node $assign)
{
$this->variable = $variable;
$this->assign = $assign;
}
/**
* @return \PhpParser\Node\Expr\ArrayDimFetch|\PhpParser\Node\Expr\PropertyFetch|\PhpParser\Node\Expr\StaticPropertyFetch|\PhpParser\Node\Expr\Variable
*/
public function getVariable()
{
return $this->variable;
}
/**
* @return \PhpParser\Node\Expr\Assign|\PhpParser\Node\Expr\AssignOp|\PhpParser\Node\Expr\AssignRef
*/
public function getAssign()
{
return $this->assign;
}
}

View File

@ -19,12 +19,12 @@ final class VersionResolver
* @api
* @var string
*/
public const PACKAGE_VERSION = '651e283c439ef593c6609ccc2623e11142544f4f';
public const PACKAGE_VERSION = '5f4edd9230355cadc311ba8e8954fb9ae5bdc849';
/**
* @api
* @var string
*/
public const RELEASE_DATE = '2023-02-07 16:57:06';
public const RELEASE_DATE = '2023-02-07 22:51:55';
/**
* @var int
*/

2
vendor/autoload.php vendored
View File

@ -22,4 +22,4 @@ if (PHP_VERSION_ID < 50600) {
require_once __DIR__ . '/composer/autoload_real.php';
return ComposerAutoloaderInit576dff0c2e3cd10b4aa48e61961493e9::getLoader();
return ComposerAutoloaderInita6db8ff7685b5b587feeb9f8fbe8099d::getLoader();

View File

@ -2160,7 +2160,6 @@ return array(
'Rector\\Php70\\Rector\\FuncCall\\CallUserMethodRector' => $baseDir . '/rules/Php70/Rector/FuncCall/CallUserMethodRector.php',
'Rector\\Php70\\Rector\\FuncCall\\EregToPregMatchRector' => $baseDir . '/rules/Php70/Rector/FuncCall/EregToPregMatchRector.php',
'Rector\\Php70\\Rector\\FuncCall\\MultiDirnameRector' => $baseDir . '/rules/Php70/Rector/FuncCall/MultiDirnameRector.php',
'Rector\\Php70\\Rector\\FuncCall\\NonVariableToVariableOnFunctionCallRector' => $baseDir . '/rules/Php70/Rector/FuncCall/NonVariableToVariableOnFunctionCallRector.php',
'Rector\\Php70\\Rector\\FuncCall\\RandomFunctionRector' => $baseDir . '/rules/Php70/Rector/FuncCall/RandomFunctionRector.php',
'Rector\\Php70\\Rector\\FuncCall\\RenameMktimeWithoutArgsToTimeRector' => $baseDir . '/rules/Php70/Rector/FuncCall/RenameMktimeWithoutArgsToTimeRector.php',
'Rector\\Php70\\Rector\\FunctionLike\\ExceptionHandlerTypehintRector' => $baseDir . '/rules/Php70/Rector/FunctionLike/ExceptionHandlerTypehintRector.php',
@ -2172,7 +2171,6 @@ return array(
'Rector\\Php70\\Rector\\Ternary\\TernaryToNullCoalescingRector' => $baseDir . '/rules/Php70/Rector/Ternary/TernaryToNullCoalescingRector.php',
'Rector\\Php70\\Rector\\Ternary\\TernaryToSpaceshipRector' => $baseDir . '/rules/Php70/Rector/Ternary/TernaryToSpaceshipRector.php',
'Rector\\Php70\\Rector\\Variable\\WrapVariableVariableNameInCurlyBracesRector' => $baseDir . '/rules/Php70/Rector/Variable/WrapVariableVariableNameInCurlyBracesRector.php',
'Rector\\Php70\\ValueObject\\VariableAssignPair' => $baseDir . '/rules/Php70/ValueObject/VariableAssignPair.php',
'Rector\\Php71\\IsArrayAndDualCheckToAble' => $baseDir . '/rules/Php71/IsArrayAndDualCheckToAble.php',
'Rector\\Php71\\NodeAnalyzer\\CountableAnalyzer' => $baseDir . '/rules/Php71/NodeAnalyzer/CountableAnalyzer.php',
'Rector\\Php71\\Rector\\Assign\\AssignArrayToStringRector' => $baseDir . '/rules/Php71/Rector/Assign/AssignArrayToStringRector.php',

View File

@ -2,7 +2,7 @@
// autoload_real.php @generated by Composer
class ComposerAutoloaderInit576dff0c2e3cd10b4aa48e61961493e9
class ComposerAutoloaderInita6db8ff7685b5b587feeb9f8fbe8099d
{
private static $loader;
@ -22,17 +22,17 @@ class ComposerAutoloaderInit576dff0c2e3cd10b4aa48e61961493e9
return self::$loader;
}
spl_autoload_register(array('ComposerAutoloaderInit576dff0c2e3cd10b4aa48e61961493e9', 'loadClassLoader'), true, true);
spl_autoload_register(array('ComposerAutoloaderInita6db8ff7685b5b587feeb9f8fbe8099d', 'loadClassLoader'), true, true);
self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__));
spl_autoload_unregister(array('ComposerAutoloaderInit576dff0c2e3cd10b4aa48e61961493e9', 'loadClassLoader'));
spl_autoload_unregister(array('ComposerAutoloaderInita6db8ff7685b5b587feeb9f8fbe8099d', 'loadClassLoader'));
require __DIR__ . '/autoload_static.php';
call_user_func(\Composer\Autoload\ComposerStaticInit576dff0c2e3cd10b4aa48e61961493e9::getInitializer($loader));
call_user_func(\Composer\Autoload\ComposerStaticInita6db8ff7685b5b587feeb9f8fbe8099d::getInitializer($loader));
$loader->setClassMapAuthoritative(true);
$loader->register(true);
$filesToLoad = \Composer\Autoload\ComposerStaticInit576dff0c2e3cd10b4aa48e61961493e9::$files;
$filesToLoad = \Composer\Autoload\ComposerStaticInita6db8ff7685b5b587feeb9f8fbe8099d::$files;
$requireFile = \Closure::bind(static function ($fileIdentifier, $file) {
if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
$GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;

View File

@ -4,7 +4,7 @@
namespace Composer\Autoload;
class ComposerStaticInit576dff0c2e3cd10b4aa48e61961493e9
class ComposerStaticInita6db8ff7685b5b587feeb9f8fbe8099d
{
public static $files = array (
'ad155f8f1cf0d418fe49e248db8c661b' => __DIR__ . '/..' . '/react/promise/src/functions_include.php',
@ -2407,7 +2407,6 @@ class ComposerStaticInit576dff0c2e3cd10b4aa48e61961493e9
'Rector\\Php70\\Rector\\FuncCall\\CallUserMethodRector' => __DIR__ . '/../..' . '/rules/Php70/Rector/FuncCall/CallUserMethodRector.php',
'Rector\\Php70\\Rector\\FuncCall\\EregToPregMatchRector' => __DIR__ . '/../..' . '/rules/Php70/Rector/FuncCall/EregToPregMatchRector.php',
'Rector\\Php70\\Rector\\FuncCall\\MultiDirnameRector' => __DIR__ . '/../..' . '/rules/Php70/Rector/FuncCall/MultiDirnameRector.php',
'Rector\\Php70\\Rector\\FuncCall\\NonVariableToVariableOnFunctionCallRector' => __DIR__ . '/../..' . '/rules/Php70/Rector/FuncCall/NonVariableToVariableOnFunctionCallRector.php',
'Rector\\Php70\\Rector\\FuncCall\\RandomFunctionRector' => __DIR__ . '/../..' . '/rules/Php70/Rector/FuncCall/RandomFunctionRector.php',
'Rector\\Php70\\Rector\\FuncCall\\RenameMktimeWithoutArgsToTimeRector' => __DIR__ . '/../..' . '/rules/Php70/Rector/FuncCall/RenameMktimeWithoutArgsToTimeRector.php',
'Rector\\Php70\\Rector\\FunctionLike\\ExceptionHandlerTypehintRector' => __DIR__ . '/../..' . '/rules/Php70/Rector/FunctionLike/ExceptionHandlerTypehintRector.php',
@ -2419,7 +2418,6 @@ class ComposerStaticInit576dff0c2e3cd10b4aa48e61961493e9
'Rector\\Php70\\Rector\\Ternary\\TernaryToNullCoalescingRector' => __DIR__ . '/../..' . '/rules/Php70/Rector/Ternary/TernaryToNullCoalescingRector.php',
'Rector\\Php70\\Rector\\Ternary\\TernaryToSpaceshipRector' => __DIR__ . '/../..' . '/rules/Php70/Rector/Ternary/TernaryToSpaceshipRector.php',
'Rector\\Php70\\Rector\\Variable\\WrapVariableVariableNameInCurlyBracesRector' => __DIR__ . '/../..' . '/rules/Php70/Rector/Variable/WrapVariableVariableNameInCurlyBracesRector.php',
'Rector\\Php70\\ValueObject\\VariableAssignPair' => __DIR__ . '/../..' . '/rules/Php70/ValueObject/VariableAssignPair.php',
'Rector\\Php71\\IsArrayAndDualCheckToAble' => __DIR__ . '/../..' . '/rules/Php71/IsArrayAndDualCheckToAble.php',
'Rector\\Php71\\NodeAnalyzer\\CountableAnalyzer' => __DIR__ . '/../..' . '/rules/Php71/NodeAnalyzer/CountableAnalyzer.php',
'Rector\\Php71\\Rector\\Assign\\AssignArrayToStringRector' => __DIR__ . '/../..' . '/rules/Php71/Rector/Assign/AssignArrayToStringRector.php',
@ -3099,9 +3097,9 @@ class ComposerStaticInit576dff0c2e3cd10b4aa48e61961493e9
public static function getInitializer(ClassLoader $loader)
{
return \Closure::bind(function () use ($loader) {
$loader->prefixLengthsPsr4 = ComposerStaticInit576dff0c2e3cd10b4aa48e61961493e9::$prefixLengthsPsr4;
$loader->prefixDirsPsr4 = ComposerStaticInit576dff0c2e3cd10b4aa48e61961493e9::$prefixDirsPsr4;
$loader->classMap = ComposerStaticInit576dff0c2e3cd10b4aa48e61961493e9::$classMap;
$loader->prefixLengthsPsr4 = ComposerStaticInita6db8ff7685b5b587feeb9f8fbe8099d::$prefixLengthsPsr4;
$loader->prefixDirsPsr4 = ComposerStaticInita6db8ff7685b5b587feeb9f8fbe8099d::$prefixDirsPsr4;
$loader->classMap = ComposerStaticInita6db8ff7685b5b587feeb9f8fbe8099d::$classMap;
}, null, ClassLoader::class);
}

View File

@ -750,17 +750,17 @@
},
{
"name": "phpstan\/phpdoc-parser",
"version": "1.16.0",
"version_normalized": "1.16.0.0",
"version": "1.16.1",
"version_normalized": "1.16.1.0",
"source": {
"type": "git",
"url": "https:\/\/github.com\/phpstan\/phpdoc-parser.git",
"reference": "57090cfccbfaa639e703c007486d605a6e80f56d"
"reference": "e27e92d939e2e3636f0a1f0afaba59692c0bf571"
},
"dist": {
"type": "zip",
"url": "https:\/\/api.github.com\/repos\/phpstan\/phpdoc-parser\/zipball\/57090cfccbfaa639e703c007486d605a6e80f56d",
"reference": "57090cfccbfaa639e703c007486d605a6e80f56d",
"url": "https:\/\/api.github.com\/repos\/phpstan\/phpdoc-parser\/zipball\/e27e92d939e2e3636f0a1f0afaba59692c0bf571",
"reference": "e27e92d939e2e3636f0a1f0afaba59692c0bf571",
"shasum": ""
},
"require": {
@ -775,7 +775,7 @@
"phpunit\/phpunit": "^9.5",
"symfony\/process": "^5.2"
},
"time": "2023-01-29T14:41:23+00:00",
"time": "2023-02-07T18:11:17+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
@ -792,7 +792,7 @@
"description": "PHPDoc parser with support for nullable, intersection and generic types",
"support": {
"issues": "https:\/\/github.com\/phpstan\/phpdoc-parser\/issues",
"source": "https:\/\/github.com\/phpstan\/phpdoc-parser\/tree\/1.16.0"
"source": "https:\/\/github.com\/phpstan\/phpdoc-parser\/tree\/1.16.1"
},
"install-path": "..\/phpstan\/phpdoc-parser"
},

File diff suppressed because one or more lines are too long

View File

@ -384,7 +384,7 @@ class TypeParser
do {
$tokens->tryConsumeTokenType(Lexer::TOKEN_PHPDOC_EOL);
if ($tokens->tryConsumeTokenType(Lexer::TOKEN_CLOSE_CURLY_BRACKET)) {
return new Ast\Type\ArrayShapeNode($items);
return new Ast\Type\ArrayShapeNode($items, \true, $kind);
}
if ($tokens->tryConsumeTokenType(Lexer::TOKEN_VARIADIC)) {
$sealed = \false;