77use PhpParser \Node \Arg ;
88use PhpParser \Node \Expr \CallLike ;
99use PhpParser \Node \Expr \Closure ;
10- use PHPStan \Reflection \ParameterReflectionWithPhpDocs ;
10+ use PHPStan \Reflection \ExtendedParameterReflection ;
1111use Rector \NodeTypeResolver \PHPStan \ParametersAcceptorSelectorVariantsWrapper ;
1212use Rector \PHPStan \ScopeFetcher ;
1313use Rector \Reflection \ReflectionResolver ;
1414
15- final class CallLikeExpectsThisBindedClosureArgsAnalyzer
15+ final readonly class CallLikeExpectsThisBindedClosureArgsAnalyzer
1616{
1717 public function __construct (
18- private readonly ReflectionResolver $ reflectionResolver
18+ private ReflectionResolver $ reflectionResolver
1919 ) {
2020 }
2121
2222 /**
23- * @param CallLike $callLike
2423 * @return Arg[]
25- * @throws \Rector\Exception\ShouldNotHappenException
2624 */
2725 public function getArgsUsingThisBindedClosure (CallLike $ callLike ): array
2826 {
@@ -49,7 +47,10 @@ public function getArgsUsingThisBindedClosure(CallLike $callLike): array
4947
5048 if ($ arg ->name ?->name !== null ) {
5149 foreach ($ parameters as $ parameter ) {
52- /** @phpstan-ignore method.notFound */
50+ if (! $ parameter instanceof ExtendedParameterReflection) {
51+ continue ;
52+ }
53+
5354 $ hasObjectBinding = (bool ) $ parameter ->getClosureThisType ();
5455 if ($ hasObjectBinding && $ arg ->name ->name === $ parameter ->getName ()) {
5556 $ args [] = $ arg ;
@@ -62,11 +63,10 @@ public function getArgsUsingThisBindedClosure(CallLike $callLike): array
6263 if (! is_string ($ arg ->name ?->name)) {
6364 $ parameter = $ parameters [$ index ] ?? null ;
6465
65- if ($ parameter === null ) {
66+ if (! $ parameter instanceof ExtendedParameterReflection ) {
6667 continue ;
6768 }
6869
69- /** @phpstan-ignore method.notFound */
7070 $ hasObjectBinding = (bool ) $ parameter ->getClosureThisType ();
7171 if ($ hasObjectBinding ) {
7272 $ args [] = $ arg ;
0 commit comments