diff --git a/rules-tests/Php81/Rector/FuncCall/NullToStrictStringFuncCallArgRector/Fixture/after_exit_namespaced.php.inc b/rules-tests/Php81/Rector/FuncCall/NullToStrictStringFuncCallArgRector/Fixture/after_exit_namespaced.php.inc index 58ab4c04dff..fd2ec86f5b3 100644 --- a/rules-tests/Php81/Rector/FuncCall/NullToStrictStringFuncCallArgRector/Fixture/after_exit_namespaced.php.inc +++ b/rules-tests/Php81/Rector/FuncCall/NullToStrictStringFuncCallArgRector/Fixture/after_exit_namespaced.php.inc @@ -1,6 +1,6 @@ +----- + diff --git a/rules-tests/Php81/Rector/FuncCall/NullToStrictStringFuncCallArgRector/Fixture/skip_constant_string_param_type.php.inc b/rules-tests/Php81/Rector/FuncCall/NullToStrictStringFuncCallArgRector/Fixture/skip_constant_string_param_type.php.inc index 1f45a2b163f..35f1c7a99a8 100644 --- a/rules-tests/Php81/Rector/FuncCall/NullToStrictStringFuncCallArgRector/Fixture/skip_constant_string_param_type.php.inc +++ b/rules-tests/Php81/Rector/FuncCall/NullToStrictStringFuncCallArgRector/Fixture/skip_constant_string_param_type.php.inc @@ -1,6 +1,6 @@ delimiter); - - if ($positionDelimiter > 0) { - $innerPattern = str_replace($this->delimiter, '\\' . $this->delimiter, $innerPattern); - } - - // change delimiter - if (strlen($innerPattern) > 2 && $innerPattern[0] === $innerPattern[strlen($innerPattern) - 1]) { - return 'foo'; - } - }); - } -} diff --git a/rules-tests/Php81/Rector/FuncCall/NullToStrictStringFuncCallArgRector/Fixture/skip_intersection_string_numeric.php.inc b/rules-tests/Php81/Rector/FuncCall/NullToStrictStringFuncCallArgRector/Fixture/skip_intersection_string_numeric.php.inc index 0c385a3d024..8c2514e389b 100644 --- a/rules-tests/Php81/Rector/FuncCall/NullToStrictStringFuncCallArgRector/Fixture/skip_intersection_string_numeric.php.inc +++ b/rules-tests/Php81/Rector/FuncCall/NullToStrictStringFuncCallArgRector/Fixture/skip_intersection_string_numeric.php.inc @@ -1,6 +1,6 @@ @@ -377,7 +375,7 @@ public function getNodeTypes(): array /** * @param FuncCall $node */ - public function refactorWithScope(Node $node, Scope $scope): ?Node + public function refactor(Node $node): ?Node { if ($this->shouldSkip($node)) { return null; @@ -386,18 +384,18 @@ public function refactorWithScope(Node $node, Scope $scope): ?Node $args = $node->getArgs(); $positions = $this->argsAnalyzer->hasNamedArg($args) ? $this->resolveNamedPositions($node, $args) - : $this->resolveOriginalPositions($node, $scope); + : $this->resolveOriginalPositions($node); if ($positions === []) { return null; } - $classReflection = $scope->getClassReflection(); + $classReflection = $this->reflectionResolver->resolveClassReflection($node); $isTrait = $classReflection instanceof ClassReflection && $classReflection->isTrait(); $isChanged = false; foreach ($positions as $position) { - $result = $this->processNullToStrictStringOnNodePosition($node, $args, $position, $isTrait, $scope); + $result = $this->processNullToStrictStringOnNodePosition($node, $args, $position, $isTrait); if ($result instanceof Node) { $node = $result; $isChanged = true; @@ -448,8 +446,7 @@ private function processNullToStrictStringOnNodePosition( FuncCall $funcCall, array $args, int|string $position, - bool $isTrait, - Scope $scope + bool $isTrait ): ?FuncCall { if (! isset($args[$position])) { return null; @@ -477,10 +474,6 @@ private function processNullToStrictStringOnNodePosition( return null; } - if ($this->isAnErrorTypeFromParentScope($argValue, $scope)) { - return null; - } - if ($this->shouldSkipTrait($argValue, $type, $isTrait)) { return null; } @@ -512,37 +505,26 @@ private function shouldSkipTrait(Expr $expr, Type $type, bool $isTrait): bool return true; } - private function isAnErrorTypeFromParentScope(Expr $expr, Scope $scope): bool - { - $parentScope = $scope->getParentScope(); - if ($parentScope instanceof Scope) { - return $parentScope->getType($expr) instanceof ErrorType; - } - - return false; - } - /** * @return int[]|string[] */ - private function resolveOriginalPositions(FuncCall $funcCall, Scope $scope): array + private function resolveOriginalPositions(FuncCall $funcCall): array { $functionReflection = $this->reflectionResolver->resolveFunctionLikeReflectionFromCall($funcCall); if (! $functionReflection instanceof NativeFunctionReflection) { return []; } - $parametersAcceptor = ParametersAcceptorSelectorVariantsWrapper::select( - $functionReflection, - $funcCall, - $scope + $parametersAcceptorWithPhpDocs = ParametersAcceptorSelector::combineAcceptors( + $functionReflection->getVariants() ); + $functionName = $functionReflection->getName(); $argNames = self::ARG_POSITION_NAME_NULL_TO_STRICT_STRING[$functionName]; $positions = []; - foreach ($parametersAcceptor->getParameters() as $position => $parameterReflection) { - if (in_array($parameterReflection->getName(), $argNames, true)) { + foreach ($parametersAcceptorWithPhpDocs->getParameters() as $position => $parameterReflectionWithPhpDoc) { + if (in_array($parameterReflectionWithPhpDoc->getName(), $argNames, true)) { $positions[] = $position; } }