Skip to content

Commit a6c1d0b

Browse files
committed
Support arrays in fast-path
1 parent affc484 commit a6c1d0b

File tree

2 files changed

+5
-5
lines changed

2 files changed

+5
-5
lines changed

src/Analyser/MutatingScope.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4489,7 +4489,7 @@ public function addTypeToExpression(Expr $expr, Type $type): self
44894489

44904490
if ($originalExprType->equals($nativeType)) {
44914491
$newType = TypeCombinator::intersect($type, $originalExprType);
4492-
if ($newType->isConstantScalarValue()->yes() && $newType->equals($originalExprType)) {
4492+
if ($newType->isObject()->no() && $newType->equals($originalExprType)) {
44934493
// don't add the same type over and over again to improve performance
44944494
return $this;
44954495
}

tests/PHPStan/Analyser/nsrt/conditional-vars.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,10 @@ class HelloWorld
1010
public function conditionalVarInTernary(array $innerHits): void
1111
{
1212
if (array_key_exists('nearest_premise', $innerHits) || array_key_exists('matching_premises', $innerHits)) {
13-
assertType('non-empty-array', $innerHits);
13+
assertType('non-empty-array<mixed>', $innerHits);
1414
$x = array_key_exists('nearest_premise', $innerHits)
1515
? assertType("non-empty-array&hasOffset('nearest_premise')", $innerHits)
16-
: assertType('non-empty-array', $innerHits);
16+
: assertType('non-empty-array<mixed>', $innerHits);
1717

1818
assertType('non-empty-array', $innerHits);
1919
}
@@ -24,11 +24,11 @@ public function conditionalVarInTernary(array $innerHits): void
2424
public function conditionalVarInIf(array $innerHits): void
2525
{
2626
if (array_key_exists('nearest_premise', $innerHits) || array_key_exists('matching_premises', $innerHits)) {
27-
assertType('non-empty-array', $innerHits);
27+
assertType('non-empty-array<mixed>', $innerHits);
2828
if (array_key_exists('nearest_premise', $innerHits)) {
2929
assertType("non-empty-array&hasOffset('nearest_premise')", $innerHits);
3030
} else {
31-
assertType('non-empty-array', $innerHits);
31+
assertType('non-empty-array<mixed>', $innerHits);
3232
}
3333

3434
assertType('non-empty-array', $innerHits);

0 commit comments

Comments
 (0)