diff --git a/src/Reflection/GenericParametersAcceptorResolver.php b/src/Reflection/GenericParametersAcceptorResolver.php index 27d8cfc11c..e22958f0a2 100644 --- a/src/Reflection/GenericParametersAcceptorResolver.php +++ b/src/Reflection/GenericParametersAcceptorResolver.php @@ -59,6 +59,9 @@ public static function resolve(array $argTypes, ParametersAcceptor $parametersAc foreach ($parameters as $param) { if (isset($namedArgTypes[$param->getName()])) { $argType = $namedArgTypes[$param->getName()]; + if ($argType instanceof ErrorType && $param->getDefaultValue() !== null) { + $argType = $param->getDefaultValue(); + } } elseif ($param->getDefaultValue() !== null) { $argType = $param->getDefaultValue(); } else { diff --git a/tests/PHPStan/Analyser/nsrt/bug-12687.php b/tests/PHPStan/Analyser/nsrt/bug-12687.php new file mode 100644 index 0000000000..5bb9e142e9 --- /dev/null +++ b/tests/PHPStan/Analyser/nsrt/bug-12687.php @@ -0,0 +1,42 @@ +