Skip to content

Commit bbcd259

Browse files
committed
Updated Rector to commit 6947eb7c4cf8cefe0e7a4cb95bbae23ab64362bd
rectorphp/rector-src@6947eb7 [NodeTypeResolver] Only use FileWithoutNamespaceNodeTraverser once on NodeScopeAndMetadataDecorator (#4369)
1 parent a3231bb commit bbcd259

10 files changed

Lines changed: 44 additions & 69 deletions

File tree

packages/FileSystemRector/Parser/FileInfoParser.php

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55

66
use RectorPrefix202306\Nette\Utils\FileSystem;
77
use PhpParser\Node\Stmt;
8-
use Rector\Core\PhpParser\NodeTraverser\FileWithoutNamespaceNodeTraverser;
98
use Rector\Core\PhpParser\Parser\RectorParser;
109
use Rector\Core\Provider\CurrentFileProvider;
1110
use Rector\Core\ValueObject\Application\File;
@@ -20,11 +19,6 @@ final class FileInfoParser
2019
* @var \Rector\NodeTypeResolver\NodeScopeAndMetadataDecorator
2120
*/
2221
private $nodeScopeAndMetadataDecorator;
23-
/**
24-
* @readonly
25-
* @var \Rector\Core\PhpParser\NodeTraverser\FileWithoutNamespaceNodeTraverser
26-
*/
27-
private $fileWithoutNamespaceNodeTraverser;
2822
/**
2923
* @readonly
3024
* @var \Rector\Core\PhpParser\Parser\RectorParser
@@ -35,10 +29,9 @@ final class FileInfoParser
3529
* @var \Rector\Core\Provider\CurrentFileProvider
3630
*/
3731
private $currentFileProvider;
38-
public function __construct(NodeScopeAndMetadataDecorator $nodeScopeAndMetadataDecorator, FileWithoutNamespaceNodeTraverser $fileWithoutNamespaceNodeTraverser, RectorParser $rectorParser, CurrentFileProvider $currentFileProvider)
32+
public function __construct(NodeScopeAndMetadataDecorator $nodeScopeAndMetadataDecorator, RectorParser $rectorParser, CurrentFileProvider $currentFileProvider)
3933
{
4034
$this->nodeScopeAndMetadataDecorator = $nodeScopeAndMetadataDecorator;
41-
$this->fileWithoutNamespaceNodeTraverser = $fileWithoutNamespaceNodeTraverser;
4235
$this->rectorParser = $rectorParser;
4336
$this->currentFileProvider = $currentFileProvider;
4437
}
@@ -49,7 +42,6 @@ public function __construct(NodeScopeAndMetadataDecorator $nodeScopeAndMetadataD
4942
public function parseFileInfoToNodesAndDecorate(string $filePath) : array
5043
{
5144
$stmts = $this->rectorParser->parseFile($filePath);
52-
$stmts = $this->fileWithoutNamespaceNodeTraverser->traverse($stmts);
5345
$file = new File($filePath, FileSystem::read($filePath));
5446
$stmts = $this->nodeScopeAndMetadataDecorator->decorateNodesFromFile($file, $stmts);
5547
$file->hydrateStmtsAndTokens($stmts, $stmts, []);

packages/NodeTypeResolver/NodeScopeAndMetadataDecorator.php

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
use PhpParser\NodeTraverser;
88
use PhpParser\NodeVisitor\CloningVisitor;
99
use PhpParser\NodeVisitor\ParentConnectingVisitor;
10+
use Rector\Core\PhpParser\NodeTraverser\FileWithoutNamespaceNodeTraverser;
1011
use Rector\Core\ValueObject\Application\File;
1112
use Rector\NodeTypeResolver\NodeVisitor\FunctionLikeParamArgPositionNodeVisitor;
1213
use Rector\NodeTypeResolver\PHPStan\Scope\PHPStanNodeScopeResolver;
@@ -17,14 +18,20 @@ final class NodeScopeAndMetadataDecorator
1718
* @var \Rector\NodeTypeResolver\PHPStan\Scope\PHPStanNodeScopeResolver
1819
*/
1920
private $phpStanNodeScopeResolver;
21+
/**
22+
* @readonly
23+
* @var \Rector\Core\PhpParser\NodeTraverser\FileWithoutNamespaceNodeTraverser
24+
*/
25+
private $fileWithoutNamespaceNodeTraverser;
2026
/**
2127
* @readonly
2228
* @var \PhpParser\NodeTraverser
2329
*/
2430
private $nodeTraverser;
25-
public function __construct(CloningVisitor $cloningVisitor, PHPStanNodeScopeResolver $phpStanNodeScopeResolver, ParentConnectingVisitor $parentConnectingVisitor, FunctionLikeParamArgPositionNodeVisitor $functionLikeParamArgPositionNodeVisitor)
31+
public function __construct(CloningVisitor $cloningVisitor, PHPStanNodeScopeResolver $phpStanNodeScopeResolver, ParentConnectingVisitor $parentConnectingVisitor, FunctionLikeParamArgPositionNodeVisitor $functionLikeParamArgPositionNodeVisitor, FileWithoutNamespaceNodeTraverser $fileWithoutNamespaceNodeTraverser)
2632
{
2733
$this->phpStanNodeScopeResolver = $phpStanNodeScopeResolver;
34+
$this->fileWithoutNamespaceNodeTraverser = $fileWithoutNamespaceNodeTraverser;
2835
$this->nodeTraverser = new NodeTraverser();
2936
// needed also for format preserving printing
3037
$this->nodeTraverser->addVisitor($cloningVisitor);
@@ -38,6 +45,7 @@ public function __construct(CloningVisitor $cloningVisitor, PHPStanNodeScopeReso
3845
*/
3946
public function decorateNodesFromFile(File $file, array $stmts) : array
4047
{
48+
$stmts = $this->fileWithoutNamespaceNodeTraverser->traverse($stmts);
4149
$stmts = $this->phpStanNodeScopeResolver->processNodes($stmts, $file->getFilePath());
4250
return $this->nodeTraverser->traverse($stmts);
4351
}

packages/NodeTypeResolver/PHPStan/Scope/PHPStanNodeScopeResolver.php

Lines changed: 6 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,6 @@
6060
use Rector\Core\Exception\ShouldNotHappenException;
6161
use Rector\Core\NodeAnalyzer\ClassAnalyzer;
6262
use Rector\Core\PhpParser\Node\CustomNode\FileWithoutNamespace;
63-
use Rector\Core\PhpParser\NodeTraverser\FileWithoutNamespaceNodeTraverser;
6463
use Rector\Core\PHPStan\NodeVisitor\WrappedNodeRestoringNodeVisitor;
6564
use Rector\Core\Util\Reflection\PrivatesAccessor;
6665
use Rector\NodeNameResolver\NodeNameResolver;
@@ -113,11 +112,6 @@ final class PHPStanNodeScopeResolver
113112
* @var \Rector\Core\NodeAnalyzer\ClassAnalyzer
114113
*/
115114
private $classAnalyzer;
116-
/**
117-
* @readonly
118-
* @var \Rector\Core\PhpParser\NodeTraverser\FileWithoutNamespaceNodeTraverser
119-
*/
120-
private $fileWithoutNamespaceNodeTraverser;
121115
/**
122116
* @var string
123117
*/
@@ -130,7 +124,7 @@ final class PHPStanNodeScopeResolver
130124
/**
131125
* @param ScopeResolverNodeVisitorInterface[] $nodeVisitors
132126
*/
133-
public function __construct(ChangedFilesDetector $changedFilesDetector, DependencyResolver $dependencyResolver, NodeScopeResolver $nodeScopeResolver, ReflectionProvider $reflectionProvider, iterable $nodeVisitors, \Rector\NodeTypeResolver\PHPStan\Scope\ScopeFactory $scopeFactory, PrivatesAccessor $privatesAccessor, NodeNameResolver $nodeNameResolver, ClassAnalyzer $classAnalyzer, FileWithoutNamespaceNodeTraverser $fileWithoutNamespaceNodeTraverser)
127+
public function __construct(ChangedFilesDetector $changedFilesDetector, DependencyResolver $dependencyResolver, NodeScopeResolver $nodeScopeResolver, ReflectionProvider $reflectionProvider, iterable $nodeVisitors, \Rector\NodeTypeResolver\PHPStan\Scope\ScopeFactory $scopeFactory, PrivatesAccessor $privatesAccessor, NodeNameResolver $nodeNameResolver, ClassAnalyzer $classAnalyzer)
134128
{
135129
$this->changedFilesDetector = $changedFilesDetector;
136130
$this->dependencyResolver = $dependencyResolver;
@@ -140,7 +134,6 @@ public function __construct(ChangedFilesDetector $changedFilesDetector, Dependen
140134
$this->privatesAccessor = $privatesAccessor;
141135
$this->nodeNameResolver = $nodeNameResolver;
142136
$this->classAnalyzer = $classAnalyzer;
143-
$this->fileWithoutNamespaceNodeTraverser = $fileWithoutNamespaceNodeTraverser;
144137
$this->nodeTraverser = new NodeTraverser();
145138
foreach ($nodeVisitors as $nodeVisitor) {
146139
$this->nodeTraverser->addVisitor($nodeVisitor);
@@ -158,22 +151,14 @@ public function processNodes(array $stmts, string $filePath, ?MutatingScope $for
158151
* @see vendor/phpstan/phpstan/phpstan.phar/src/Analyser/NodeScopeResolver.php:282
159152
*/
160153
Assert::allIsInstanceOf($stmts, Stmt::class);
161-
$isInitFileWithoutNamespace = \false;
162-
if (!$isScopeRefreshing && !\current($stmts) instanceof FileWithoutNamespace) {
163-
$stmts = $this->fileWithoutNamespaceNodeTraverser->traverse($stmts);
164-
$currentStmt = \current($stmts);
165-
if ($currentStmt instanceof FileWithoutNamespace) {
166-
$this->nodeTraverser->traverse($stmts);
167-
$stmts = $currentStmt->stmts;
168-
$isInitFileWithoutNamespace = \true;
169-
}
170-
}
171-
if (!$isInitFileWithoutNamespace) {
172-
$this->nodeTraverser->traverse($stmts);
173-
}
154+
$this->nodeTraverser->traverse($stmts);
174155
$scope = $formerMutatingScope ?? $this->scopeFactory->createFromFile($filePath);
175156
// skip chain method calls, performance issue: https://github.com/phpstan/phpstan/issues/254
176157
$nodeCallback = function (Node $node, MutatingScope $mutatingScope) use(&$nodeCallback, $isScopeRefreshing, $filePath) : void {
158+
if ($node instanceof FileWithoutNamespace) {
159+
$this->nodeScopeResolver->processNodes($node->stmts, $mutatingScope, $nodeCallback);
160+
return;
161+
}
177162
if (($node instanceof Expression || $node instanceof Return_ || $node instanceof Assign || $node instanceof EnumCase || $node instanceof AssignOp || $node instanceof Cast) && $node->expr instanceof Expr) {
178163
$node->expr->setAttribute(AttributeKey::SCOPE, $mutatingScope);
179164
}

rules/Arguments/Rector/ClassMethod/ArgumentAdderRector.php

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -231,11 +231,19 @@ private function shouldSkipParameter($node, ArgumentAdder $argumentAdder) : bool
231231
}
232232
// Check if default value is the same
233233
$classMethod = $this->astResolver->resolveClassMethodFromCall($node);
234-
if ($classMethod instanceof ClassMethod && isset($classMethod->params[$position]) && !$this->changedArgumentsDetector->isDefaultValueChanged($classMethod->params[$position], $argumentAdder->getArgumentDefaultValue())) {
235-
return \true;
234+
if (!$classMethod instanceof ClassMethod) {
235+
// is correct scope?
236+
return !$this->argumentAddingScope->isInCorrectScope($node, $argumentAdder);
237+
}
238+
if (!isset($classMethod->params[$position])) {
239+
// is correct scope?
240+
return !$this->argumentAddingScope->isInCorrectScope($node, $argumentAdder);
241+
}
242+
if ($this->changedArgumentsDetector->isDefaultValueChanged($classMethod->params[$position], $argumentAdder->getArgumentDefaultValue())) {
243+
// is correct scope?
244+
return !$this->argumentAddingScope->isInCorrectScope($node, $argumentAdder);
236245
}
237-
// is correct scope?
238-
return !$this->argumentAddingScope->isInCorrectScope($node, $argumentAdder);
246+
return \true;
239247
}
240248
/**
241249
* @param mixed $defaultValue

rules/Naming/Naming/UseImportsResolver.php

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
use PhpParser\Node\Stmt\Namespace_;
1010
use PhpParser\Node\Stmt\Use_;
1111
use Rector\Core\PhpParser\Node\CustomNode\FileWithoutNamespace;
12-
use Rector\Core\PhpParser\NodeTraverser\FileWithoutNamespaceNodeTraverser;
1312
use Rector\Core\Provider\CurrentFileProvider;
1413
use Rector\Core\ValueObject\Application\File;
1514
final class UseImportsResolver
@@ -19,15 +18,9 @@ final class UseImportsResolver
1918
* @var \Rector\Core\Provider\CurrentFileProvider
2019
*/
2120
private $currentFileProvider;
22-
/**
23-
* @readonly
24-
* @var \Rector\Core\PhpParser\NodeTraverser\FileWithoutNamespaceNodeTraverser
25-
*/
26-
private $fileWithoutNamespaceNodeTraverser;
27-
public function __construct(CurrentFileProvider $currentFileProvider, FileWithoutNamespaceNodeTraverser $fileWithoutNamespaceNodeTraverser)
21+
public function __construct(CurrentFileProvider $currentFileProvider)
2822
{
2923
$this->currentFileProvider = $currentFileProvider;
30-
$this->fileWithoutNamespaceNodeTraverser = $fileWithoutNamespaceNodeTraverser;
3124
}
3225
/**
3326
* @return \PhpParser\Node\Stmt\Namespace_|\Rector\Core\PhpParser\Node\CustomNode\FileWithoutNamespace|null
@@ -56,10 +49,7 @@ private function resolveNamespace()
5649
}
5750
$currentStmt = \current($newStmts);
5851
if (!$currentStmt instanceof FileWithoutNamespace) {
59-
$newStmts = $this->fileWithoutNamespaceNodeTraverser->traverse($newStmts);
60-
/** @var FileWithoutNamespace $currentStmt */
61-
$currentStmt = \current($newStmts);
62-
return $currentStmt;
52+
return null;
6353
}
6454
return $currentStmt;
6555
}

src/Application/FileProcessor.php

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
declare (strict_types=1);
44
namespace Rector\Core\Application;
55

6-
use Rector\Core\PhpParser\NodeTraverser\FileWithoutNamespaceNodeTraverser;
76
use Rector\Core\PhpParser\NodeTraverser\RectorNodeTraverser;
87
use Rector\Core\PhpParser\Parser\RectorParser;
98
use Rector\Core\ValueObject\Application\File;
@@ -25,17 +24,11 @@ final class FileProcessor
2524
* @var \Rector\Core\PhpParser\NodeTraverser\RectorNodeTraverser
2625
*/
2726
private $rectorNodeTraverser;
28-
/**
29-
* @readonly
30-
* @var \Rector\Core\PhpParser\NodeTraverser\FileWithoutNamespaceNodeTraverser
31-
*/
32-
private $fileWithoutNamespaceNodeTraverser;
33-
public function __construct(NodeScopeAndMetadataDecorator $nodeScopeAndMetadataDecorator, RectorParser $rectorParser, RectorNodeTraverser $rectorNodeTraverser, FileWithoutNamespaceNodeTraverser $fileWithoutNamespaceNodeTraverser)
27+
public function __construct(NodeScopeAndMetadataDecorator $nodeScopeAndMetadataDecorator, RectorParser $rectorParser, RectorNodeTraverser $rectorNodeTraverser)
3428
{
3529
$this->nodeScopeAndMetadataDecorator = $nodeScopeAndMetadataDecorator;
3630
$this->rectorParser = $rectorParser;
3731
$this->rectorNodeTraverser = $rectorNodeTraverser;
38-
$this->fileWithoutNamespaceNodeTraverser = $fileWithoutNamespaceNodeTraverser;
3932
}
4033
public function parseFileInfoToLocalCache(File $file) : void
4134
{
@@ -48,8 +41,7 @@ public function parseFileInfoToLocalCache(File $file) : void
4841
}
4942
public function refactor(File $file) : void
5043
{
51-
$newStmts = $this->fileWithoutNamespaceNodeTraverser->traverse($file->getNewStmts());
52-
$newStmts = $this->rectorNodeTraverser->traverse($newStmts);
44+
$newStmts = $this->rectorNodeTraverser->traverse($file->getNewStmts());
5345
$file->changeNewStmts($newStmts);
5446
}
5547
}

src/Application/VersionResolver.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,12 @@ final class VersionResolver
1919
* @api
2020
* @var string
2121
*/
22-
public const PACKAGE_VERSION = '40a1f34b12c548f7be05f02a084be54e8374a58a';
22+
public const PACKAGE_VERSION = '6947eb7c4cf8cefe0e7a4cb95bbae23ab64362bd';
2323
/**
2424
* @api
2525
* @var string
2626
*/
27-
public const RELEASE_DATE = '2023-06-28 00:27:59';
27+
public const RELEASE_DATE = '2023-06-28 03:22:05';
2828
/**
2929
* @var int
3030
*/

vendor/autoload.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,4 +22,4 @@
2222

2323
require_once __DIR__ . '/composer/autoload_real.php';
2424

25-
return ComposerAutoloaderInit164e89c268f0277d2e62d6c923fb9f89::getLoader();
25+
return ComposerAutoloaderInite7dd856a68ca53c3b92f1068f8078756::getLoader();

vendor/composer/autoload_real.php

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
// autoload_real.php @generated by Composer
44

5-
class ComposerAutoloaderInit164e89c268f0277d2e62d6c923fb9f89
5+
class ComposerAutoloaderInite7dd856a68ca53c3b92f1068f8078756
66
{
77
private static $loader;
88

@@ -22,17 +22,17 @@ public static function getLoader()
2222
return self::$loader;
2323
}
2424

25-
spl_autoload_register(array('ComposerAutoloaderInit164e89c268f0277d2e62d6c923fb9f89', 'loadClassLoader'), true, true);
25+
spl_autoload_register(array('ComposerAutoloaderInite7dd856a68ca53c3b92f1068f8078756', 'loadClassLoader'), true, true);
2626
self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__));
27-
spl_autoload_unregister(array('ComposerAutoloaderInit164e89c268f0277d2e62d6c923fb9f89', 'loadClassLoader'));
27+
spl_autoload_unregister(array('ComposerAutoloaderInite7dd856a68ca53c3b92f1068f8078756', 'loadClassLoader'));
2828

2929
require __DIR__ . '/autoload_static.php';
30-
call_user_func(\Composer\Autoload\ComposerStaticInit164e89c268f0277d2e62d6c923fb9f89::getInitializer($loader));
30+
call_user_func(\Composer\Autoload\ComposerStaticInite7dd856a68ca53c3b92f1068f8078756::getInitializer($loader));
3131

3232
$loader->setClassMapAuthoritative(true);
3333
$loader->register(true);
3434

35-
$filesToLoad = \Composer\Autoload\ComposerStaticInit164e89c268f0277d2e62d6c923fb9f89::$files;
35+
$filesToLoad = \Composer\Autoload\ComposerStaticInite7dd856a68ca53c3b92f1068f8078756::$files;
3636
$requireFile = \Closure::bind(static function ($fileIdentifier, $file) {
3737
if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
3838
$GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;

vendor/composer/autoload_static.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
namespace Composer\Autoload;
66

7-
class ComposerStaticInit164e89c268f0277d2e62d6c923fb9f89
7+
class ComposerStaticInite7dd856a68ca53c3b92f1068f8078756
88
{
99
public static $files = array (
1010
'ad155f8f1cf0d418fe49e248db8c661b' => __DIR__ . '/..' . '/react/promise/src/functions_include.php',
@@ -3098,9 +3098,9 @@ class ComposerStaticInit164e89c268f0277d2e62d6c923fb9f89
30983098
public static function getInitializer(ClassLoader $loader)
30993099
{
31003100
return \Closure::bind(function () use ($loader) {
3101-
$loader->prefixLengthsPsr4 = ComposerStaticInit164e89c268f0277d2e62d6c923fb9f89::$prefixLengthsPsr4;
3102-
$loader->prefixDirsPsr4 = ComposerStaticInit164e89c268f0277d2e62d6c923fb9f89::$prefixDirsPsr4;
3103-
$loader->classMap = ComposerStaticInit164e89c268f0277d2e62d6c923fb9f89::$classMap;
3101+
$loader->prefixLengthsPsr4 = ComposerStaticInite7dd856a68ca53c3b92f1068f8078756::$prefixLengthsPsr4;
3102+
$loader->prefixDirsPsr4 = ComposerStaticInite7dd856a68ca53c3b92f1068f8078756::$prefixDirsPsr4;
3103+
$loader->classMap = ComposerStaticInite7dd856a68ca53c3b92f1068f8078756::$classMap;
31043104

31053105
}, null, ClassLoader::class);
31063106
}

0 commit comments

Comments
 (0)