1
0
mirror of https://github.com/danog/psalm.git synced 2024-11-30 04:39:00 +01:00

Handle first class callable on unknown functions

This commit is contained in:
orklah 2022-01-31 21:36:01 +01:00
parent 4729eb004a
commit a598efb4ab
2 changed files with 9 additions and 4 deletions

View File

@ -484,6 +484,8 @@ class FunctionCallAnalyzer extends CallAnalyzer
$is_maybe_root_function = !$function_name instanceof PhpParser\Node\Name\FullyQualified $is_maybe_root_function = !$function_name instanceof PhpParser\Node\Name\FullyQualified
&& count($function_name->parts) === 1; && count($function_name->parts) === 1;
$args = $stmt->isFirstClassCallable() ? [] : $stmt->getArgs();
if (!$function_call_info->in_call_map) { if (!$function_call_info->in_call_map) {
$predefined_functions = $codebase->config->getPredefinedFunctions(); $predefined_functions = $codebase->config->getPredefinedFunctions();
$is_predefined = isset($predefined_functions[strtolower($original_function_id)]) $is_predefined = isset($predefined_functions[strtolower($original_function_id)])
@ -495,11 +497,10 @@ class FunctionCallAnalyzer extends CallAnalyzer
$function_call_info->function_id, $function_call_info->function_id,
$code_location, $code_location,
$is_maybe_root_function $is_maybe_root_function
) === false ) === false) {
) { if ($args && ArgumentsAnalyzer::analyze(
if (ArgumentsAnalyzer::analyze(
$statements_analyzer, $statements_analyzer,
$stmt->getArgs(), $args,
null, null,
null, null,
true, true,

View File

@ -798,6 +798,10 @@ class ClosureTest extends TestCase
'error_levels' => [], 'error_levels' => [],
'8.1' '8.1'
], ],
'unknownFirstClassCallable' => [
'<?php
unknown(...);',
],
]; ];
} }