diff --git a/src/PhpDoc/TypeNodeResolver.php b/src/PhpDoc/TypeNodeResolver.php index d5c331884c..b9597cb59c 100644 --- a/src/PhpDoc/TypeNodeResolver.php +++ b/src/PhpDoc/TypeNodeResolver.php @@ -451,7 +451,7 @@ function (CallableTypeParameterNode $parameterNode) use ($nameScope, &$isVariadi $isVariadic = $isVariadic || $parameterNode->isVariadic; return new NativeParameterReflection( $parameterNode->parameterName, - $parameterNode->isOptional, + $parameterNode->isOptional || $parameterNode->isVariadic, $this->resolve($parameterNode->type, $nameScope), $parameterNode->isReference ? PassedByReference::createCreatesNewVariable() : PassedByReference::createNo(), $parameterNode->isVariadic, diff --git a/tests/PHPStan/Analyser/AnalyserIntegrationTest.php b/tests/PHPStan/Analyser/AnalyserIntegrationTest.php index 49026eaec2..afbda2777d 100644 --- a/tests/PHPStan/Analyser/AnalyserIntegrationTest.php +++ b/tests/PHPStan/Analyser/AnalyserIntegrationTest.php @@ -273,6 +273,12 @@ public function testBug3379(): void $this->assertSame('Reflection error: Could not locate constant "SOME_UNKNOWN_CONST" while evaluating expression in Bug3379\Foo at line 8', $errors[1]->getMessage()); } + public function testBug3798(): void + { + $errors = $this->runAnalyse(__DIR__ . '/data/bug-3798.php'); + $this->assertCount(0, $errors); + } + /** * @param string $file * @return \PHPStan\Analyser\Error[] diff --git a/tests/PHPStan/Analyser/data/bug-3798.php b/tests/PHPStan/Analyser/data/bug-3798.php new file mode 100644 index 0000000000..b3aa28897c --- /dev/null +++ b/tests/PHPStan/Analyser/data/bug-3798.php @@ -0,0 +1,10 @@ +