Skip to content

Commit e74be98

Browse files
staabmondrejmirtes
authored andcommitted
Resolve parameter types only when checkArgumentTypes=true
1 parent 1b92af0 commit e74be98

File tree

1 file changed

+35
-36
lines changed

1 file changed

+35
-36
lines changed

src/Rules/FunctionCallParametersCheck.php

Lines changed: 35 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -249,43 +249,42 @@ public function check(
249249
continue;
250250
}
251251

252-
$parameterType = TypeUtils::resolveLateResolvableTypes($parameter->getType());
253-
if (
254-
$this->checkArgumentTypes
255-
&& !$parameter->passedByReference()->createsNewVariable()
256-
&& !$this->ruleLevelHelper->accepts($parameterType, $argumentValueType, $scope->isDeclareStrictTypes())
257-
) {
258-
$verbosityLevel = VerbosityLevel::getRecommendedLevelByType($parameterType, $argumentValueType);
259-
$parameterDescription = sprintf('%s$%s', $parameter->isVariadic() ? '...' : '', $parameter->getName());
260-
$errors[] = RuleErrorBuilder::message(sprintf(
261-
$messages[6],
262-
$argumentName === null ? sprintf(
263-
'#%d %s',
264-
$i + 1,
265-
$parameterDescription,
266-
) : $parameterDescription,
267-
$parameterType->describe($verbosityLevel),
268-
$argumentValueType->describe($verbosityLevel),
269-
))->line($argumentLine)->build();
270-
}
252+
if ($this->checkArgumentTypes) {
253+
$parameterType = TypeUtils::resolveLateResolvableTypes($parameter->getType());
271254

272-
if (
273-
$this->checkArgumentTypes
274-
&& $this->checkUnresolvableParameterTypes
275-
&& $originalParameter !== null
276-
&& !$this->unresolvableTypeHelper->containsUnresolvableType($originalParameter->getType())
277-
&& $this->unresolvableTypeHelper->containsUnresolvableType($parameterType)
278-
&& isset($messages[13])
279-
) {
280-
$parameterDescription = sprintf('%s$%s', $parameter->isVariadic() ? '...' : '', $parameter->getName());
281-
$errors[] = RuleErrorBuilder::message(sprintf(
282-
$messages[13],
283-
$argumentName === null ? sprintf(
284-
'#%d %s',
285-
$i + 1,
286-
$parameterDescription,
287-
) : $parameterDescription,
288-
))->line($argumentLine)->build();
255+
if (!$parameter->passedByReference()->createsNewVariable()
256+
&& !$this->ruleLevelHelper->accepts($parameterType, $argumentValueType, $scope->isDeclareStrictTypes())
257+
) {
258+
$verbosityLevel = VerbosityLevel::getRecommendedLevelByType($parameterType, $argumentValueType);
259+
$parameterDescription = sprintf('%s$%s', $parameter->isVariadic() ? '...' : '', $parameter->getName());
260+
$errors[] = RuleErrorBuilder::message(sprintf(
261+
$messages[6],
262+
$argumentName === null ? sprintf(
263+
'#%d %s',
264+
$i + 1,
265+
$parameterDescription,
266+
) : $parameterDescription,
267+
$parameterType->describe($verbosityLevel),
268+
$argumentValueType->describe($verbosityLevel),
269+
))->line($argumentLine)->build();
270+
}
271+
272+
if ($this->checkUnresolvableParameterTypes
273+
&& $originalParameter !== null
274+
&& isset($messages[13])
275+
&& !$this->unresolvableTypeHelper->containsUnresolvableType($originalParameter->getType())
276+
&& $this->unresolvableTypeHelper->containsUnresolvableType($parameterType)
277+
) {
278+
$parameterDescription = sprintf('%s$%s', $parameter->isVariadic() ? '...' : '', $parameter->getName());
279+
$errors[] = RuleErrorBuilder::message(sprintf(
280+
$messages[13],
281+
$argumentName === null ? sprintf(
282+
'#%d %s',
283+
$i + 1,
284+
$parameterDescription,
285+
) : $parameterDescription,
286+
))->line($argumentLine)->build();
287+
}
289288
}
290289

291290
if (

0 commit comments

Comments
 (0)