Updated Rector to commit df459e711ae5bd8f359df40fbef863cc386bf107

df459e711a Handle AlwaysRememberedExpr in deep Expr (#4310)
This commit is contained in:
Tomas Votruba 2023-06-21 09:44:12 +00:00
parent 3c275c29fd
commit f41e5dc13b
16 changed files with 90 additions and 216 deletions

View File

@ -8,7 +8,7 @@
],
"require": {
"php": "^7.2|^8.0",
"phpstan/phpstan": "^1.10.15"
"phpstan/phpstan": "^1.10.20"
},
"autoload": {
"files": [

View File

@ -9,7 +9,6 @@ use Rector\CodingStyle\Rector\Catch_\CatchExceptionNameMatchingTypeRector;
use Rector\CodingStyle\Rector\Class_\AddArrayDefaultToArrayPropertyRector;
use Rector\CodingStyle\Rector\ClassConst\RemoveFinalFromConstRector;
use Rector\CodingStyle\Rector\ClassConst\SplitGroupedClassConstantsRector;
use Rector\CodingStyle\Rector\ClassConst\VarConstantCommentRector;
use Rector\CodingStyle\Rector\ClassMethod\FuncGetArgsToVariadicParamRector;
use Rector\CodingStyle\Rector\ClassMethod\MakeInheritedMethodVisibilitySameAsParentRector;
use Rector\CodingStyle\Rector\ClassMethod\NewlineBeforeNewAssignSetRector;
@ -39,5 +38,5 @@ use Rector\Transform\Rector\FuncCall\FuncCallToConstFetchRector;
use Rector\Visibility\Rector\ClassMethod\ExplicitPublicClassMethodRector;
return static function (RectorConfig $rectorConfig) : void {
$rectorConfig->ruleWithConfiguration(FuncCallToConstFetchRector::class, ['php_sapi_name' => 'PHP_SAPI', 'pi' => 'M_PI']);
$rectorConfig->rules([SeparateMultiUseImportsRector::class, PostIncDecToPreIncDecRector::class, UnSpreadOperatorRector::class, NewlineAfterStatementRector::class, RemoveFinalFromConstRector::class, NullableCompareToNullRector::class, BinarySwitchToIfElseRector::class, ConsistentImplodeRector::class, TernaryConditionVariableAssignmentRector::class, SymplifyQuoteEscapeRector::class, StringClassNameToClassConstantRector::class, CatchExceptionNameMatchingTypeRector::class, UseIncrementAssignRector::class, SplitDoubleAssignRector::class, VarConstantCommentRector::class, EncapsedStringsToSprintfRector::class, WrapEncapsedVariableInCurlyBracesRector::class, NewlineBeforeNewAssignSetRector::class, AddArrayDefaultToArrayPropertyRector::class, MakeInheritedMethodVisibilitySameAsParentRector::class, CallUserFuncArrayToVariadicRector::class, VersionCompareFuncCallToConstantRector::class, StaticArrowFunctionRector::class, StaticClosureRector::class, CountArrayToEmptyArrayComparisonRector::class, CallUserFuncToMethodCallRector::class, FuncGetArgsToVariadicParamRector::class, StrictArraySearchRector::class, UseClassKeywordForClassNameResolutionRector::class, SplitGroupedPropertiesRector::class, SplitGroupedClassConstantsRector::class, ExplicitPublicClassMethodRector::class]);
$rectorConfig->rules([SeparateMultiUseImportsRector::class, PostIncDecToPreIncDecRector::class, UnSpreadOperatorRector::class, NewlineAfterStatementRector::class, RemoveFinalFromConstRector::class, NullableCompareToNullRector::class, BinarySwitchToIfElseRector::class, ConsistentImplodeRector::class, TernaryConditionVariableAssignmentRector::class, SymplifyQuoteEscapeRector::class, StringClassNameToClassConstantRector::class, CatchExceptionNameMatchingTypeRector::class, UseIncrementAssignRector::class, SplitDoubleAssignRector::class, EncapsedStringsToSprintfRector::class, WrapEncapsedVariableInCurlyBracesRector::class, NewlineBeforeNewAssignSetRector::class, AddArrayDefaultToArrayPropertyRector::class, MakeInheritedMethodVisibilitySameAsParentRector::class, CallUserFuncArrayToVariadicRector::class, VersionCompareFuncCallToConstantRector::class, StaticArrowFunctionRector::class, StaticClosureRector::class, CountArrayToEmptyArrayComparisonRector::class, CallUserFuncToMethodCallRector::class, FuncGetArgsToVariadicParamRector::class, StrictArraySearchRector::class, UseClassKeywordForClassNameResolutionRector::class, SplitGroupedPropertiesRector::class, SplitGroupedClassConstantsRector::class, ExplicitPublicClassMethodRector::class]);
};

View File

@ -1,4 +1,4 @@
# 369 Rules Overview
# 368 Rules Overview
<br>
@ -8,7 +8,7 @@
- [CodeQuality](#codequality) (72)
- [CodingStyle](#codingstyle) (32)
- [CodingStyle](#codingstyle) (31)
- [DeadCode](#deadcode) (43)
@ -2299,24 +2299,6 @@ Use ++ increment instead of `$var += 1`
<br>
### VarConstantCommentRector
Constant should have a `@var` comment with type
- class: [`Rector\CodingStyle\Rector\ClassConst\VarConstantCommentRector`](../rules/CodingStyle/Rector/ClassConst/VarConstantCommentRector.php)
```diff
class SomeClass
{
+ /**
+ * @var string
+ */
const HI = 'hi';
}
```
<br>
### VersionCompareFuncCallToConstantRector
Changes use of call to version compare function to use of PHP version constant

View File

@ -61,6 +61,7 @@ use Rector\Core\Exception\ShouldNotHappenException;
use Rector\Core\NodeAnalyzer\ClassAnalyzer;
use Rector\Core\PhpParser\Node\CustomNode\FileWithoutNamespace;
use Rector\Core\PhpParser\NodeTraverser\FileWithoutNamespaceNodeTraverser;
use Rector\Core\PHPStan\NodeVisitor\WrappedNodeRestoringNodeVisitor;
use Rector\Core\Util\Reflection\PrivatesAccessor;
use Rector\NodeNameResolver\NodeNameResolver;
use Rector\NodeTypeResolver\Node\AttributeKey;
@ -438,6 +439,9 @@ final class PHPStanNodeScopeResolver
{
$this->nodeScopeResolver->processNodes($stmts, $mutatingScope, $nodeCallback);
$this->resolveAndSaveDependentFiles($stmts, $mutatingScope, $filePath);
$nodeTraverser = new NodeTraverser();
$nodeTraverser->addVisitor(new WrappedNodeRestoringNodeVisitor());
$nodeTraverser->traverse($stmts);
return $stmts;
}
/**

View File

@ -1,154 +0,0 @@
<?php
declare (strict_types=1);
namespace Rector\CodingStyle\Rector\ClassConst;
use PhpParser\Node;
use PhpParser\Node\Stmt\ClassConst;
use PHPStan\PhpDocParser\Ast\PhpDoc\VarTagValueNode;
use PHPStan\PhpDocParser\Ast\Type\ArrayTypeNode;
use PHPStan\PhpDocParser\Ast\Type\GenericTypeNode;
use PHPStan\PhpDocParser\Ast\Type\UnionTypeNode;
use PHPStan\Type\ArrayType;
use PHPStan\Type\Constant\ConstantArrayType;
use PHPStan\Type\MixedType;
use PHPStan\Type\Type;
use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfo;
use Rector\BetterPhpDocParser\PhpDocManipulator\PhpDocTypeChanger;
use Rector\Core\Rector\AbstractRector;
use Rector\NodeTypeResolver\TypeComparator\TypeComparator;
use Rector\Privatization\TypeManipulator\TypeNormalizer;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
* @deprecated The doc block types are not reliable, and typed constants are comming to PHP 8.3, use those instead.
*
* @see \Rector\Tests\CodingStyle\Rector\ClassConst\VarConstantCommentRector\VarConstantCommentRectorTest
*/
final class VarConstantCommentRector extends AbstractRector
{
/**
* @readonly
* @var \Rector\NodeTypeResolver\TypeComparator\TypeComparator
*/
private $typeComparator;
/**
* @readonly
* @var \Rector\BetterPhpDocParser\PhpDocManipulator\PhpDocTypeChanger
*/
private $phpDocTypeChanger;
/**
* @readonly
* @var \Rector\Privatization\TypeManipulator\TypeNormalizer
*/
private $typeNormalizer;
public function __construct(TypeComparator $typeComparator, PhpDocTypeChanger $phpDocTypeChanger, TypeNormalizer $typeNormalizer)
{
$this->typeComparator = $typeComparator;
$this->phpDocTypeChanger = $phpDocTypeChanger;
$this->typeNormalizer = $typeNormalizer;
}
public function getRuleDefinition() : RuleDefinition
{
return new RuleDefinition('Constant should have a @var comment with type', [new CodeSample(<<<'CODE_SAMPLE'
class SomeClass
{
const HI = 'hi';
}
CODE_SAMPLE
, <<<'CODE_SAMPLE'
class SomeClass
{
/**
* @var string
*/
const HI = 'hi';
}
CODE_SAMPLE
)]);
}
/**
* @return array<class-string<Node>>
*/
public function getNodeTypes() : array
{
return [ClassConst::class];
}
/**
* @param ClassConst $node
*/
public function refactor(Node $node) : ?Node
{
if (\count($node->consts) > 1) {
return null;
}
$constType = $this->getType($node->consts[0]->value);
if ($constType instanceof MixedType) {
return null;
}
// generalize false/true type to bool, as mostly default value but accepts both
$constType = $this->typeNormalizer->generalizeConstantBoolTypes($constType);
$phpDocInfo = $this->phpDocInfoFactory->createFromNodeOrEmpty($node);
if ($this->shouldSkipConstantArrayType($constType, $phpDocInfo)) {
return null;
}
if ($this->typeComparator->isSubtype($constType, $phpDocInfo->getVarType())) {
return null;
}
// already filled
if ($phpDocInfo->getVarTagValueNode() instanceof VarTagValueNode) {
return null;
}
$this->phpDocTypeChanger->changeVarType($node, $phpDocInfo, $constType);
if (!$phpDocInfo->hasChanged()) {
return null;
}
return $node;
}
private function hasTwoAndMoreGenericClassStringTypes(ConstantArrayType $constantArrayType) : bool
{
$typeNode = $this->staticTypeMapper->mapPHPStanTypeToPHPStanPhpDocTypeNode($constantArrayType);
if (!$typeNode instanceof ArrayTypeNode) {
return \false;
}
if (!$typeNode->type instanceof UnionTypeNode) {
return \false;
}
$genericTypeNodeCount = 0;
foreach ($typeNode->type->types as $unionedTypeNode) {
if ($unionedTypeNode instanceof GenericTypeNode) {
++$genericTypeNodeCount;
}
}
return $genericTypeNodeCount > 1;
}
/**
* Skip big arrays and mixed[] constants
*/
private function shouldSkipConstantArrayType(Type $constType, PhpDocInfo $phpDocInfo) : bool
{
if (!$constType instanceof ConstantArrayType) {
return \false;
}
$currentVarType = $phpDocInfo->getVarType();
if ($currentVarType instanceof ArrayType && $currentVarType->getItemType() instanceof MixedType) {
return \true;
}
if ($this->hasTwoAndMoreGenericClassStringTypes($constType)) {
return \true;
}
return $this->isHugeNestedConstantArrayTyp($constType);
}
private function isHugeNestedConstantArrayTyp(ConstantArrayType $constantArrayType) : bool
{
if (\count($constantArrayType->getValueTypes()) <= 3) {
return \false;
}
foreach ($constantArrayType->getValueTypes() as $constValueType) {
if ($constValueType instanceof ConstantArrayType) {
return \true;
}
}
return \false;
}
}

View File

@ -19,12 +19,12 @@ final class VersionResolver
* @api
* @var string
*/
public const PACKAGE_VERSION = '3ed219bb2fb0f598e09ecc061655a97f28a77454';
public const PACKAGE_VERSION = 'df459e711ae5bd8f359df40fbef863cc386bf107';
/**
* @api
* @var string
*/
public const RELEASE_DATE = '2023-06-20 09:48:49';
public const RELEASE_DATE = '2023-06-21 16:40:17';
/**
* @var int
*/

View File

@ -0,0 +1,26 @@
<?php
declare (strict_types=1);
namespace Rector\Core\PHPStan\NodeVisitor;
use PhpParser\Node;
use PhpParser\NodeVisitorAbstract;
use PHPStan\Node\Expr\AlwaysRememberedExpr;
/**
* Restore node tree to avoid PHPStan virtual node printing
* @ref https://github.com/phpstan/phpstan-src/commit/0cdda0b210a623ee299323da80771c2c84c602f9
*/
final class WrappedNodeRestoringNodeVisitor extends NodeVisitorAbstract
{
public function enterNode(Node $node) : ?Node
{
if (!$node instanceof AlwaysRememberedExpr) {
return null;
}
$expr = $node;
while ($expr instanceof AlwaysRememberedExpr) {
$expr = $expr->getExpr();
}
return $expr;
}
}

View File

@ -367,15 +367,32 @@ final class BetterNodeFinder
*/
public function findFirstInFunctionLikeScoped($functionLike, callable $filter) : ?Node
{
$foundNode = $this->findFirst((array) $functionLike->stmts, $filter);
if ($functionLike->stmts === null) {
return null;
}
$foundNode = $this->findFirst($functionLike->stmts, $filter);
if (!$foundNode instanceof Node) {
return null;
}
$parentFunctionLike = $this->findParentByTypes($foundNode, [ClassMethod::class, Function_::class, Closure::class, Class_::class]);
if ($parentFunctionLike !== $functionLike) {
return null;
if (!$this->hasInstancesOf($functionLike->stmts, [Class_::class, Function_::class, Closure::class])) {
return $foundNode;
}
return $foundNode;
$scopedNode = null;
$this->simpleCallableNodeTraverser->traverseNodesWithCallable($functionLike->stmts, static function (Node $subNode) use(&$scopedNode, $foundNode) : ?int {
if ($subNode instanceof Class_ || $subNode instanceof Function_ || $subNode instanceof Closure) {
if ($foundNode instanceof $subNode && $subNode === $foundNode) {
$scopedNode = $subNode;
return NodeTraverser::STOP_TRAVERSAL;
}
return NodeTraverser::DONT_TRAVERSE_CURRENT_AND_CHILDREN;
}
if ($foundNode instanceof $subNode && $subNode === $foundNode) {
$scopedNode = $subNode;
return NodeTraverser::STOP_TRAVERSAL;
}
return null;
});
return $scopedNode;
}
public function resolveCurrentStatement(Node $node) : ?Stmt
{

2
vendor/autoload.php vendored
View File

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

View File

@ -1462,7 +1462,6 @@ return array(
'Rector\\CodingStyle\\Rector\\Catch_\\CatchExceptionNameMatchingTypeRector' => $baseDir . '/rules/CodingStyle/Rector/Catch_/CatchExceptionNameMatchingTypeRector.php',
'Rector\\CodingStyle\\Rector\\ClassConst\\RemoveFinalFromConstRector' => $baseDir . '/rules/CodingStyle/Rector/ClassConst/RemoveFinalFromConstRector.php',
'Rector\\CodingStyle\\Rector\\ClassConst\\SplitGroupedClassConstantsRector' => $baseDir . '/rules/CodingStyle/Rector/ClassConst/SplitGroupedClassConstantsRector.php',
'Rector\\CodingStyle\\Rector\\ClassConst\\VarConstantCommentRector' => $baseDir . '/rules/CodingStyle/Rector/ClassConst/VarConstantCommentRector.php',
'Rector\\CodingStyle\\Rector\\ClassMethod\\DataProviderArrayItemsNewlinedRector' => $baseDir . '/rules/CodingStyle/Rector/ClassMethod/DataProviderArrayItemsNewlinedRector.php',
'Rector\\CodingStyle\\Rector\\ClassMethod\\FuncGetArgsToVariadicParamRector' => $baseDir . '/rules/CodingStyle/Rector/ClassMethod/FuncGetArgsToVariadicParamRector.php',
'Rector\\CodingStyle\\Rector\\ClassMethod\\MakeInheritedMethodVisibilitySameAsParentRector' => $baseDir . '/rules/CodingStyle/Rector/ClassMethod/MakeInheritedMethodVisibilitySameAsParentRector.php',
@ -1608,6 +1607,7 @@ return array(
'Rector\\Core\\NodeManipulator\\StmtsManipulator' => $baseDir . '/src/NodeManipulator/StmtsManipulator.php',
'Rector\\Core\\NonPhpFile\\NonPhpFileProcessor' => $baseDir . '/src/NonPhpFile/NonPhpFileProcessor.php',
'Rector\\Core\\NonPhpFile\\Rector\\RenameClassNonPhpRector' => $baseDir . '/src/NonPhpFile/Rector/RenameClassNonPhpRector.php',
'Rector\\Core\\PHPStan\\NodeVisitor\\WrappedNodeRestoringNodeVisitor' => $baseDir . '/src/PHPStan/NodeVisitor/WrappedNodeRestoringNodeVisitor.php',
'Rector\\Core\\PHPStan\\Reflection\\TypeToCallReflectionResolver\\ClosureTypeToCallReflectionResolver' => $baseDir . '/src/PHPStan/Reflection/TypeToCallReflectionResolver/ClosureTypeToCallReflectionResolver.php',
'Rector\\Core\\PHPStan\\Reflection\\TypeToCallReflectionResolver\\ConstantArrayTypeToCallReflectionResolver' => $baseDir . '/src/PHPStan/Reflection/TypeToCallReflectionResolver/ConstantArrayTypeToCallReflectionResolver.php',
'Rector\\Core\\PHPStan\\Reflection\\TypeToCallReflectionResolver\\ConstantStringTypeToCallReflectionResolver' => $baseDir . '/src/PHPStan/Reflection/TypeToCallReflectionResolver/ConstantStringTypeToCallReflectionResolver.php',

View File

@ -2,7 +2,7 @@
// autoload_real.php @generated by Composer
class ComposerAutoloaderInit52002a44aff02a3895d61e0c389cf8d8
class ComposerAutoloaderInitb182314be48c7453fab0665e5cc0c4bc
{
private static $loader;
@ -22,17 +22,17 @@ class ComposerAutoloaderInit52002a44aff02a3895d61e0c389cf8d8
return self::$loader;
}
spl_autoload_register(array('ComposerAutoloaderInit52002a44aff02a3895d61e0c389cf8d8', 'loadClassLoader'), true, true);
spl_autoload_register(array('ComposerAutoloaderInitb182314be48c7453fab0665e5cc0c4bc', 'loadClassLoader'), true, true);
self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__));
spl_autoload_unregister(array('ComposerAutoloaderInit52002a44aff02a3895d61e0c389cf8d8', 'loadClassLoader'));
spl_autoload_unregister(array('ComposerAutoloaderInitb182314be48c7453fab0665e5cc0c4bc', 'loadClassLoader'));
require __DIR__ . '/autoload_static.php';
call_user_func(\Composer\Autoload\ComposerStaticInit52002a44aff02a3895d61e0c389cf8d8::getInitializer($loader));
call_user_func(\Composer\Autoload\ComposerStaticInitb182314be48c7453fab0665e5cc0c4bc::getInitializer($loader));
$loader->setClassMapAuthoritative(true);
$loader->register(true);
$filesToLoad = \Composer\Autoload\ComposerStaticInit52002a44aff02a3895d61e0c389cf8d8::$files;
$filesToLoad = \Composer\Autoload\ComposerStaticInitb182314be48c7453fab0665e5cc0c4bc::$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 ComposerStaticInit52002a44aff02a3895d61e0c389cf8d8
class ComposerStaticInitb182314be48c7453fab0665e5cc0c4bc
{
public static $files = array (
'ad155f8f1cf0d418fe49e248db8c661b' => __DIR__ . '/..' . '/react/promise/src/functions_include.php',
@ -1713,7 +1713,6 @@ class ComposerStaticInit52002a44aff02a3895d61e0c389cf8d8
'Rector\\CodingStyle\\Rector\\Catch_\\CatchExceptionNameMatchingTypeRector' => __DIR__ . '/../..' . '/rules/CodingStyle/Rector/Catch_/CatchExceptionNameMatchingTypeRector.php',
'Rector\\CodingStyle\\Rector\\ClassConst\\RemoveFinalFromConstRector' => __DIR__ . '/../..' . '/rules/CodingStyle/Rector/ClassConst/RemoveFinalFromConstRector.php',
'Rector\\CodingStyle\\Rector\\ClassConst\\SplitGroupedClassConstantsRector' => __DIR__ . '/../..' . '/rules/CodingStyle/Rector/ClassConst/SplitGroupedClassConstantsRector.php',
'Rector\\CodingStyle\\Rector\\ClassConst\\VarConstantCommentRector' => __DIR__ . '/../..' . '/rules/CodingStyle/Rector/ClassConst/VarConstantCommentRector.php',
'Rector\\CodingStyle\\Rector\\ClassMethod\\DataProviderArrayItemsNewlinedRector' => __DIR__ . '/../..' . '/rules/CodingStyle/Rector/ClassMethod/DataProviderArrayItemsNewlinedRector.php',
'Rector\\CodingStyle\\Rector\\ClassMethod\\FuncGetArgsToVariadicParamRector' => __DIR__ . '/../..' . '/rules/CodingStyle/Rector/ClassMethod/FuncGetArgsToVariadicParamRector.php',
'Rector\\CodingStyle\\Rector\\ClassMethod\\MakeInheritedMethodVisibilitySameAsParentRector' => __DIR__ . '/../..' . '/rules/CodingStyle/Rector/ClassMethod/MakeInheritedMethodVisibilitySameAsParentRector.php',
@ -1859,6 +1858,7 @@ class ComposerStaticInit52002a44aff02a3895d61e0c389cf8d8
'Rector\\Core\\NodeManipulator\\StmtsManipulator' => __DIR__ . '/../..' . '/src/NodeManipulator/StmtsManipulator.php',
'Rector\\Core\\NonPhpFile\\NonPhpFileProcessor' => __DIR__ . '/../..' . '/src/NonPhpFile/NonPhpFileProcessor.php',
'Rector\\Core\\NonPhpFile\\Rector\\RenameClassNonPhpRector' => __DIR__ . '/../..' . '/src/NonPhpFile/Rector/RenameClassNonPhpRector.php',
'Rector\\Core\\PHPStan\\NodeVisitor\\WrappedNodeRestoringNodeVisitor' => __DIR__ . '/../..' . '/src/PHPStan/NodeVisitor/WrappedNodeRestoringNodeVisitor.php',
'Rector\\Core\\PHPStan\\Reflection\\TypeToCallReflectionResolver\\ClosureTypeToCallReflectionResolver' => __DIR__ . '/../..' . '/src/PHPStan/Reflection/TypeToCallReflectionResolver/ClosureTypeToCallReflectionResolver.php',
'Rector\\Core\\PHPStan\\Reflection\\TypeToCallReflectionResolver\\ConstantArrayTypeToCallReflectionResolver' => __DIR__ . '/../..' . '/src/PHPStan/Reflection/TypeToCallReflectionResolver/ConstantArrayTypeToCallReflectionResolver.php',
'Rector\\Core\\PHPStan\\Reflection\\TypeToCallReflectionResolver\\ConstantStringTypeToCallReflectionResolver' => __DIR__ . '/../..' . '/src/PHPStan/Reflection/TypeToCallReflectionResolver/ConstantStringTypeToCallReflectionResolver.php',
@ -3097,9 +3097,9 @@ class ComposerStaticInit52002a44aff02a3895d61e0c389cf8d8
public static function getInitializer(ClassLoader $loader)
{
return \Closure::bind(function () use ($loader) {
$loader->prefixLengthsPsr4 = ComposerStaticInit52002a44aff02a3895d61e0c389cf8d8::$prefixLengthsPsr4;
$loader->prefixDirsPsr4 = ComposerStaticInit52002a44aff02a3895d61e0c389cf8d8::$prefixDirsPsr4;
$loader->classMap = ComposerStaticInit52002a44aff02a3895d61e0c389cf8d8::$classMap;
$loader->prefixLengthsPsr4 = ComposerStaticInitb182314be48c7453fab0665e5cc0c4bc::$prefixLengthsPsr4;
$loader->prefixDirsPsr4 = ComposerStaticInitb182314be48c7453fab0665e5cc0c4bc::$prefixDirsPsr4;
$loader->classMap = ComposerStaticInitb182314be48c7453fab0665e5cc0c4bc::$classMap;
}, null, ClassLoader::class);
}

View File

@ -976,17 +976,17 @@
},
{
"name": "phpstan\/phpstan",
"version": "1.10.19",
"version_normalized": "1.10.19.0",
"version": "1.10.20",
"version_normalized": "1.10.20.0",
"source": {
"type": "git",
"url": "https:\/\/github.com\/phpstan\/phpstan.git",
"reference": "af5a296ff02610c1bfb4ddfac9fd4a08657b9046"
"reference": "c4c8adb56313fbd59ff5a5f4a496bbed1a6b8803"
},
"dist": {
"type": "zip",
"url": "https:\/\/api.github.com\/repos\/phpstan\/phpstan\/zipball\/af5a296ff02610c1bfb4ddfac9fd4a08657b9046",
"reference": "af5a296ff02610c1bfb4ddfac9fd4a08657b9046",
"url": "https:\/\/api.github.com\/repos\/phpstan\/phpstan\/zipball\/c4c8adb56313fbd59ff5a5f4a496bbed1a6b8803",
"reference": "c4c8adb56313fbd59ff5a5f4a496bbed1a6b8803",
"shasum": ""
},
"require": {
@ -995,7 +995,7 @@
"conflict": {
"phpstan\/phpstan-shim": "*"
},
"time": "2023-06-14T15:26:58+00:00",
"time": "2023-06-20T12:07:40+00:00",
"bin": [
"phpstan",
"phpstan.phar"

File diff suppressed because one or more lines are too long

Binary file not shown.

View File

@ -1,16 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCgAdFiEEynwsejDI6OEnSoR2UcZzBf/C5cAFAmSJ3CUACgkQUcZzBf/C
5cAA1xAAk6e73+tZEVRVuWOE1u/Q6ZgMynL5cU1yOPhuoig09T6wwWubcD8ckdps
QQc1d2lr5+5I+Yaj2tgoqu5r/CqnbpRa5WTSRSPdpIUkcdp54bJcE4WteH+P9wZQ
QiCzxPSK4ZPPbVxLSWp7EjGfbcatf2Obx1KzoDlI21khDw7UaB9ZDISNKdBd96BB
PXsBdqf5+SsWdxH3FiYJbPCHnKTio8gRVF0hH2nV8kFbgp4qolufJRlMdBDYJI0m
0dGr3AA/Oya5Vv+qJi8Pn9tBUQPE9JJpvuQCTzzONTNJO7xffoVXgD1loVDvjZkX
3hvgGkK9R3IKX5+JHG6BDJ/og+n+Vf3wg4/OPAZ84iQgl0kVdiR1ujXkJyiTxy1l
ktr3qvnbnj45krbbYGVIR6XTstoGIVDfQpONoR6iPyfx0LvDWzpFXeE7FUHBooVZ
rx0xwTLoQkwaCKVSsPXq+xv4+fhL0b9zyoFAoddIvjjtU6OxjIFqAVWAki7MiNml
Gm8aoM6c9Q40wKNsU/43FtfJJzHrfIHFZS4a2kLCP/vcQiMWx49tOpBjH5XzFXy3
fYThM7PvSlpgaAObY8Lp4HPST6zHMq0xTThmHOMkyFgheBE85aQwvgWmgE3bFobs
L9d9EoKceyYA0ozQ+JIn3uDV6c0TZVJ2W97AAqAJBj1MBz64BCI=
=F5Pi
iQIzBAABCgAdFiEEynwsejDI6OEnSoR2UcZzBf/C5cAFAmSRlnIACgkQUcZzBf/C
5cAJXg//SFG9Ax7JYvbJ83YuQ7zgYtXCwIDEBN7gnXbnpy9+PkfhCEwTwBq3Ge8I
BOJc9pLhr7A3slhaU69Hg509yCrTQCy4iX9nqDB71rgoytrOq8s9pl5z4yim3O55
WRzI1aHet3RHlsw8ayR+ZoCpw4bGTwht3LPRxCN6R4UygBmV/gLxbU/o1P0pc/VR
ychSKQyZPkZIpWlcO4FZ9RhnhsxK+sXq2ehSZrXphFlrp8SRsoOSgAd4ZDSEhH6i
E1Kb0BCzxSUrhUWP0mgcJYfhxrrMmaytdKtGsnFzlWn/5tK3VTOECGmWM1icbAlp
yMWGCggo/qICZ/AVFhbfSgn4PsGaYS2bP/l2b/EZoPG7XD3t/0mhIpuEuq9vsp+k
7ngeK5bfxDACAzeEf0aEG3kPHebU+fsL9T/uwuxGpwTWK6z00DyEVITkX+TceiZg
NTM+/08w8AaREPiZ4RvebA7i/Rcx7gAGmX+0IGyKkP/7vGw58Ti4owc0GzTSEC7h
8u+8A9ZB9h7OxNJuhxgkITaO9sL5XEitDweEVQZNF42I+wiOholstl3gz2SwjyFA
6w3lK1lkEABFYl6f0HTIw0mHK7OmuzTF+3iy9fu3O2Fvh2WWQCOZsSNZVGgGKGlf
3zbyzpm73yXe0ldJjswBOgD8mVUVuVRZMT/W4YmwDMsPDR7x45s=
=oCBR
-----END PGP SIGNATURE-----