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

Add better reconciliation of ints from array keys

This commit is contained in:
Matthew Brown 2020-03-29 10:22:22 -04:00
parent 788da0680e
commit f097b9ae6c

View File

@ -2633,7 +2633,11 @@ class AssertionReconciler extends \Psalm\Type\Reconciler
if ($scalar_type === 'int') { if ($scalar_type === 'int') {
$value = (int) $value; $value = (int) $value;
if ($existing_var_type->hasMixed() || $existing_var_type->hasScalar() || $existing_var_type->hasNumeric()) { if ($existing_var_type->hasMixed()
|| $existing_var_type->hasScalar()
|| $existing_var_type->hasNumeric()
|| $existing_var_type->hasArrayKey()
) {
if ($is_loose_equality) { if ($is_loose_equality) {
return $existing_var_type; return $existing_var_type;
} }
@ -2650,6 +2654,7 @@ class AssertionReconciler extends \Psalm\Type\Reconciler
if ($existing_var_atomic_type->as->hasMixed() if ($existing_var_atomic_type->as->hasMixed()
|| $existing_var_atomic_type->as->hasScalar() || $existing_var_atomic_type->as->hasScalar()
|| $existing_var_atomic_type->as->hasNumeric() || $existing_var_atomic_type->as->hasNumeric()
|| $existing_var_atomic_type->as->hasArrayKey()
) { ) {
if ($is_loose_equality) { if ($is_loose_equality) {
return $existing_var_type; return $existing_var_type;