Skip to content

Commit

Permalink
Merge pull request #9598 from orklah/fefefef
Browse files Browse the repository at this point in the history
fix #9049
  • Loading branch information
orklah committed Apr 3, 2023
2 parents cbf1afc + eb7be11 commit 1f72597
Show file tree
Hide file tree
Showing 2 changed files with 68 additions and 4 deletions.
56 changes: 52 additions & 4 deletions src/Psalm/Internal/Type/Comparator/KeyedArrayComparator.php
Expand Up @@ -116,7 +116,7 @@ public static function isContainedBy(
if ($atomic_comparison_result) {
$atomic_comparison_result->to_string_cast
= $atomic_comparison_result->to_string_cast === true
|| $property_type_comparison->to_string_cast === true;
|| $property_type_comparison->to_string_cast === true;
}
}
}
Expand Down Expand Up @@ -152,7 +152,23 @@ public static function isContainedBy(
if ($atomic_comparison_result) {
$atomic_comparison_result->type_coerced
= $key_type_comparison->type_coerced === true
&& $atomic_comparison_result->type_coerced !== false;
&& $atomic_comparison_result->type_coerced !== false;

$atomic_comparison_result->type_coerced_from_mixed
= $key_type_comparison->type_coerced_from_mixed === true
&& $atomic_comparison_result->type_coerced_from_mixed !== false;

$atomic_comparison_result->type_coerced_from_as_mixed
= $key_type_comparison->type_coerced_from_as_mixed === true
&& $atomic_comparison_result->type_coerced_from_as_mixed !== false;

$atomic_comparison_result->type_coerced_from_scalar
= $key_type_comparison->type_coerced_from_scalar === true
&& $atomic_comparison_result->type_coerced_from_scalar !== false;

$atomic_comparison_result->scalar_type_match_found
= $key_type_comparison->scalar_type_match_found === true
&& $atomic_comparison_result->scalar_type_match_found !== false;
}
$all_types_contain = false;
}
Expand All @@ -170,7 +186,23 @@ public static function isContainedBy(
if ($atomic_comparison_result) {
$atomic_comparison_result->type_coerced
= $property_type_comparison->type_coerced === true
&& $atomic_comparison_result->type_coerced !== false;
&& $atomic_comparison_result->type_coerced !== false;

$atomic_comparison_result->type_coerced_from_mixed
= $property_type_comparison->type_coerced_from_mixed === true
&& $atomic_comparison_result->type_coerced_from_mixed !== false;

$atomic_comparison_result->type_coerced_from_as_mixed
= $property_type_comparison->type_coerced_from_as_mixed === true
&& $atomic_comparison_result->type_coerced_from_as_mixed !== false;

$atomic_comparison_result->type_coerced_from_scalar
= $property_type_comparison->type_coerced_from_scalar === true
&& $atomic_comparison_result->type_coerced_from_scalar !== false;

$atomic_comparison_result->scalar_type_match_found
= $property_type_comparison->scalar_type_match_found === true
&& $atomic_comparison_result->scalar_type_match_found !== false;
}
$all_types_contain = false;
}
Expand Down Expand Up @@ -198,7 +230,23 @@ public static function isContainedBy(
if ($atomic_comparison_result) {
$atomic_comparison_result->type_coerced
= $param_comparison->type_coerced === true
&& $atomic_comparison_result->type_coerced !== false;
&& $atomic_comparison_result->type_coerced !== false;

$atomic_comparison_result->type_coerced_from_mixed
= $param_comparison->type_coerced_from_mixed === true
&& $atomic_comparison_result->type_coerced_from_mixed !== false;

$atomic_comparison_result->type_coerced_from_as_mixed
= $param_comparison->type_coerced_from_as_mixed === true
&& $atomic_comparison_result->type_coerced_from_as_mixed !== false;

$atomic_comparison_result->type_coerced_from_scalar
= $param_comparison->type_coerced_from_scalar === true
&& $atomic_comparison_result->type_coerced_from_scalar !== false;

$atomic_comparison_result->scalar_type_match_found
= $param_comparison->scalar_type_match_found === true
&& $atomic_comparison_result->scalar_type_match_found !== false;
}
$all_types_contain = false;
}
Expand Down
16 changes: 16 additions & 0 deletions tests/ReturnTypeTest.php
Expand Up @@ -1227,6 +1227,22 @@ function alwaysNull(): null {
'ignored_issues' => [],
'php_version' => '8.2',
],
'returnListMixedVsListStringIsAMixedError' => [
'code' => '<?php
/**
* @psalm-suppress MixedReturnTypeCoercion
* @return list<string>
*/
function foo(){
/**
* @var list<mixed>
* @psalm-suppress MixedReturnTypeCoercion
*/
return [];
}
',
],
];
}

Expand Down

0 comments on commit 1f72597

Please sign in to comment.