Skip to content

Commit ee3546e

Browse files
committed
[CodingStyle] Skip by reference required params on call inside on ArrowFunctionDelegatingCallToFirstClassCallableRector
1 parent ec38401 commit ee3546e

2 files changed

Lines changed: 21 additions & 0 deletions

File tree

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<?php
2+
3+
namespace Rector\Tests\CodingStyle\Rector\ArrowFunction\ArrowFunctionDelegatingCallToFirstClassCallableRector\Fixture;
4+
5+
final class SkipWithReset
6+
{
7+
public function run()
8+
{
9+
$data = [['a']];
10+
return array_map(reset(...), $data);
11+
}
12+
}

rules/CodingStyle/Guard/ArrowFunctionAndClosureFirstClassCallableGuard.php

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
use PHPStan\Reflection\MethodReflection;
2222
use Rector\NodeNameResolver\NodeNameResolver;
2323
use Rector\NodeTypeResolver\Node\AttributeKey;
24+
use Rector\NodeTypeResolver\PHPStan\ParametersAcceptorSelectorVariantsWrapper;
2425
use Rector\PhpDocParser\NodeTraverser\SimpleCallableNodeTraverser;
2526
use Rector\PhpParser\AstResolver;
2627
use Rector\PhpParser\Comparing\NodeComparator;
@@ -102,6 +103,14 @@ public function shouldSkip(
102103
return true;
103104
}
104105

106+
// check if args require by reference
107+
$parameters = ParametersAcceptorSelectorVariantsWrapper::select($reflection, $callLike, $scope)->getParameters();
108+
foreach ($parameters as $parameter) {
109+
if ($parameter->passedByReference()->yes()) {
110+
return true;
111+
}
112+
}
113+
105114
$functionLike = $this->astResolver->resolveClassMethodOrFunctionFromCall($callLike);
106115
if (! $functionLike instanceof FunctionLike) {
107116
return false;

0 commit comments

Comments
 (0)