Skip to content

Commit cce5097

Browse files
authored
[CodeQuality] Handle crash on first class callable in call (#6556)
* [CodeQuality] Handle crash on first class callable in call * fix
1 parent bf5270a commit cce5097

File tree

2 files changed

+28
-1
lines changed

2 files changed

+28
-1
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace Rector\Tests\CodeQuality\Rector\ClassMethod\OptionalParametersAfterRequiredRector\Fixture;
6+
7+
final class SkipFirstClassCallableInCall
8+
{
9+
public function getSubscribedEvents()
10+
{
11+
return $this->textElement(...)->execute(...);
12+
}
13+
14+
public function textElement()
15+
{
16+
}
17+
}

src/NodeTypeResolver/PHPStan/Scope/PHPStanNodeScopeResolver.php

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
namespace Rector\NodeTypeResolver\PHPStan\Scope;
66

77
use Error;
8-
use PHPStan\Node\Printer\Printer;
98
use PhpParser\Node;
109
use PhpParser\Node\Arg;
1110
use PhpParser\Node\ArrayItem;
@@ -88,6 +87,8 @@
8887
use PHPStan\Analyser\MutatingScope;
8988
use PHPStan\Analyser\NodeScopeResolver;
9089
use PHPStan\Analyser\ScopeContext;
90+
use PHPStan\Node\MethodCallableNode;
91+
use PHPStan\Node\Printer\Printer;
9192
use PHPStan\Node\UnreachableStatementNode;
9293
use PHPStan\Node\VirtualNode;
9394
use PHPStan\Parser\ParserErrorsException;
@@ -384,6 +385,15 @@ public function processNodes(
384385
$node->cond->setAttribute(AttributeKey::SCOPE, $mutatingScope);
385386
return;
386387
}
388+
389+
if ($node instanceof MethodCallableNode) {
390+
$node->getOriginalNode()
391+
->setAttribute(AttributeKey::SCOPE, $mutatingScope);
392+
$node->getOriginalNode()
393+
->var->setAttribute(AttributeKey::SCOPE, $mutatingScope);
394+
$node->getOriginalNode()
395+
->name->setAttribute(AttributeKey::SCOPE, $mutatingScope);
396+
}
387397
};
388398

389399
try {

0 commit comments

Comments
 (0)