Skip to content

Commit 39630b1

Browse files
committed
more precise
1 parent b0868be commit 39630b1

File tree

2 files changed

+5
-4
lines changed

2 files changed

+5
-4
lines changed

Diff for: src/Type/Constant/ConstantArrayType.php

+3-2
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
use PHPStan\Type\Generic\TemplateTypeMap;
3636
use PHPStan\Type\Generic\TemplateTypeVariance;
3737
use PHPStan\Type\IntegerRangeType;
38+
use PHPStan\Type\IntegerType;
3839
use PHPStan\Type\IntersectionType;
3940
use PHPStan\Type\IsSuperTypeOfResult;
4041
use PHPStan\Type\MixedType;
@@ -1256,8 +1257,8 @@ public function getKeysArrayFiltered(Type $filterValueType, bool $strict): Type
12561257

12571258
return TypeCombinator::intersect(
12581259
new ArrayType(
1259-
$keysArray->getIterableKeyType()->generalize(GeneralizePrecision::lessSpecific()),
1260-
$keysArray->getIterableValueType()->generalize(GeneralizePrecision::lessSpecific()),
1260+
new IntegerType(),
1261+
$keysArray->getIterableValueType(),
12611262
),
12621263
new AccessoryArrayListType(),
12631264
);

Diff for: tests/PHPStan/Analyser/nsrt/bug-11928.php

+2-2
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ function doFoo()
99
$a = [2 => 1, 3 => 2, 4 => 1];
1010

1111
$keys = array_keys($a, 1); // returns [2, 4]
12-
assertType('list<int>', $keys);
12+
assertType('list<2|3|4>', $keys);
1313

1414
$keys = array_keys($a); // returns [2, 3, 4]
1515
assertType('array{2, 3, 4}', $keys);
@@ -18,7 +18,7 @@ function doFoo()
1818
function doFooStrings() {
1919
$a = [2 => 'hi', 3 => '123', 'xy' => 5];
2020
$keys = array_keys($a, 1);
21-
assertType('list<int|string>', $keys);
21+
assertType("list<2|3|'xy'>", $keys);
2222

2323
$keys = array_keys($a);
2424
assertType("array{2, 3, 'xy'}", $keys);

0 commit comments

Comments
 (0)