mirror of
https://github.com/rectorphp/rector.git
synced 2024-06-02 01:10:53 +00:00
decrease complexity of NodeScopeResolver
This commit is contained in:
parent
0685ece179
commit
1c38169690
5
ecs.yml
5
ecs.yml
|
@ -66,11 +66,6 @@ parameters:
|
|||
- 'src/Configuration/Rector/Guard/RecipeGuard.php'
|
||||
- 'src/Configuration/Rector/*Recipe.php'
|
||||
|
||||
Symplify\CodingStandard\Sniffs\CleanCode\CognitiveComplexitySniff:
|
||||
# @todo fix later
|
||||
- 'packages/NodeTypeResolver/src/NodeTypeResolver.php'
|
||||
- 'packages/NodeTypeResolver/src/PHPStan/Scope/NodeScopeResolver.php'
|
||||
|
||||
Symplify\CodingStandard\Fixer\Naming\PropertyNameMatchingTypeFixer:
|
||||
- 'packages/NodeTypeResolver/src/PHPStan/Scope/NodeScopeResolver.php'
|
||||
|
||||
|
|
|
@ -85,19 +85,7 @@ final class NodeScopeResolver
|
|||
// the class reflection is resolved AFTER entering to class node
|
||||
// so we need to get it from the first after this one
|
||||
if ($node instanceof Class_ || $node instanceof Interface_) {
|
||||
if (isset($node->namespacedName)) {
|
||||
$scope = $scope->enterClass($this->broker->getClass((string) $node->namespacedName));
|
||||
} else {
|
||||
// possibly anonymous class
|
||||
$anonymousClassReflection = (new PrivatesAccessor())->getPrivateProperty(
|
||||
$this->phpStanNodeScopeResolver,
|
||||
'anonymousClassReflection'
|
||||
);
|
||||
|
||||
if ($anonymousClassReflection) {
|
||||
$scope = $scope->enterAnonymousClass($anonymousClassReflection);
|
||||
}
|
||||
}
|
||||
$scope = $this->resolveClassOrInterfaceNode($node, $scope);
|
||||
}
|
||||
|
||||
$node->setAttribute(TypeAttribute::SCOPE, $scope);
|
||||
|
@ -140,4 +128,26 @@ final class NodeScopeResolver
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Class_|Interface_ $classOrInterfaceNode
|
||||
*/
|
||||
private function resolveClassOrInterfaceNode(Node $classOrInterfaceNode, Scope $scope): Scope
|
||||
{
|
||||
if (isset($classOrInterfaceNode->namespacedName)) {
|
||||
return $scope->enterClass($this->broker->getClass((string) $classOrInterfaceNode->namespacedName));
|
||||
}
|
||||
|
||||
// possibly anonymous class
|
||||
$anonymousClassReflection = (new PrivatesAccessor())->getPrivateProperty(
|
||||
$this->phpStanNodeScopeResolver,
|
||||
'anonymousClassReflection'
|
||||
);
|
||||
|
||||
if ($anonymousClassReflection) {
|
||||
return $scope->enterAnonymousClass($anonymousClassReflection);
|
||||
}
|
||||
|
||||
return $scope;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user