Skip to content

Commit a5587b1

Browse files
committed
fixes
1 parent e6244ef commit a5587b1

File tree

2 files changed

+23
-10
lines changed

2 files changed

+23
-10
lines changed

rules/CodingStyle/Rector/Closure/StaticClosureRector.php

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

55
namespace Rector\CodingStyle\Rector\Closure;
66

7+
use Override;
78
use PhpParser\Node;
89
use PhpParser\Node\Expr\CallLike;
910
use PhpParser\Node\Expr\Closure;
11+
use PhpParser\Node\Expr\FuncCall;
12+
use PhpParser\Node\Expr\MethodCall;
13+
use PhpParser\Node\Expr\StaticCall;
1014
use Rector\CodingStyle\Guard\StaticGuard;
1115
use Rector\NodeAnalyzer\CallLikeExpectsThisBindedClosureArgsAnalyzer;
1216
use Rector\Rector\AbstractRector;
@@ -71,9 +75,9 @@ public function beforeTraverse(array $nodes): array
7175

7276
$this->traverseNodesWithCallable($nodes, function (Node $node): ?CallLike {
7377
if (
74-
! $node instanceof Node\Expr\MethodCall
75-
&& ! $node instanceof Node\Expr\StaticCall
76-
&& ! $node instanceof Node\Expr\FuncCall
78+
! $node instanceof MethodCall
79+
&& ! $node instanceof StaticCall
80+
&& ! $node instanceof FuncCall
7781
) {
7882
return null;
7983
}

src/NodeAnalyzer/CallLikeExpectsThisBindedClosureArgsAnalyzer.php

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,38 @@
11
<?php
22

3+
declare(strict_types=1);
4+
35
namespace Rector\NodeAnalyzer;
46

57
use PhpParser\Node\Arg;
68
use PhpParser\Node\Expr\CallLike;
79
use PhpParser\Node\Expr\Closure;
10+
use PHPStan\Reflection\ParameterReflectionWithPhpDocs;
811
use Rector\NodeTypeResolver\PHPStan\ParametersAcceptorSelectorVariantsWrapper;
912
use Rector\PHPStan\ScopeFetcher;
1013
use Rector\Reflection\ReflectionResolver;
11-
use PHPStan\Reflection\ParameterReflectionWithPhpDocs;
1214

1315
class CallLikeExpectsThisBindedClosureArgsAnalyzer
1416
{
15-
public function __construct(private ReflectionResolver $reflectionResolver)
16-
{
17+
public function __construct(
18+
private readonly ReflectionResolver $reflectionResolver
19+
) {
1720
}
1821

22+
/**
23+
* @param CallLike $callLike
24+
* @return Arg[]
25+
* @throws \Rector\Exception\ShouldNotHappenException
26+
*/
1927
public function getArgsUsingThisBindedClosure(CallLike $callLike): array
2028
{
21-
/** @var Arg[] $args */
2229
$args = [];
2330
$reflection = $this->reflectionResolver->resolveFunctionLikeReflectionFromCall($callLike);
2431

32+
if ($callLike->isFirstClassCallable()) {
33+
return [];
34+
}
35+
2536
if ($reflection === null) {
2637
return [];
2738
}
@@ -38,7 +49,6 @@ public function getArgsUsingThisBindedClosure(CallLike $callLike): array
3849
}
3950

4051
if ($arg->name?->name !== null) {
41-
/** @var ParameterReflectionWithPhpDocs $parameter */
4252
foreach ($parameters as $parameter) {
4353
$hasObjectBinding = (bool) $parameter->getClosureThisType();
4454
if ($hasObjectBinding && $arg->name->name === $parameter->getName()) {
@@ -49,8 +59,7 @@ public function getArgsUsingThisBindedClosure(CallLike $callLike): array
4959
continue;
5060
}
5161

52-
if ($arg->name?->name === null) {
53-
/** @var ParameterReflectionWithPhpDocs $parameter */
62+
if (! is_string($arg->name?->name)) {
5463
$parameter = $parameters[$index] ?? null;
5564

5665
if ($parameter === null) {

0 commit comments

Comments
 (0)