From c17af4128ee3abbad8a971f10864a75e0dcca828 Mon Sep 17 00:00:00 2001 From: orklah Date: Tue, 7 Dec 2021 19:38:52 +0100 Subject: [PATCH] don't stop analyzing array, even if we already have a type and we can't create an object like --- .../Statements/Expression/ArrayAnalyzer.php | 4 ---- tests/ArrayAssignmentTest.php | 22 +++++++++++++++++++ 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/src/Psalm/Internal/Analyzer/Statements/Expression/ArrayAnalyzer.php b/src/Psalm/Internal/Analyzer/Statements/Expression/ArrayAnalyzer.php index f77ca5f8d31..aafdd9648e0 100644 --- a/src/Psalm/Internal/Analyzer/Statements/Expression/ArrayAnalyzer.php +++ b/src/Psalm/Internal/Analyzer/Statements/Expression/ArrayAnalyzer.php @@ -453,10 +453,6 @@ private static function analyzeArrayItem( } } - if ($array_creation_info->item_value_atomic_types && !$array_creation_info->can_create_objectlike) { - return; - } - if ($item_value_type = $statements_analyzer->node_data->getType($item->value)) { if ($item_key_value !== null && count($array_creation_info->property_types) <= 100) { $array_creation_info->property_types[$item_key_value] = $item_value_type; diff --git a/tests/ArrayAssignmentTest.php b/tests/ArrayAssignmentTest.php index 3400fbbacc4..f431cc9df77 100644 --- a/tests/ArrayAssignmentTest.php +++ b/tests/ArrayAssignmentTest.php @@ -1693,6 +1693,28 @@ function unpackArray(array $data): array [], '8.1' ], + 'unpackArrayWithTwoTypesNotObjectLike' => [ + ' + */ + function posiviteIntegers(): array + { + return [1]; + } + + $_a = [...posiviteIntegers(), int()];', + 'assertions' => [ + '$_a' => 'non-empty-list', + ], + [], + '8.1' + ], ]; }