Skip to content

Commit 662976c

Browse files
committed
fix
1 parent adc5f0d commit 662976c

File tree

2 files changed

+13
-13
lines changed

2 files changed

+13
-13
lines changed

src/Analyser/MutatingScope.php

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -162,12 +162,14 @@
162162
use function ltrim;
163163
use function md5;
164164
use function sprintf;
165+
use function str_contains;
165166
use function str_decrement;
166167
use function str_increment;
167168
use function str_starts_with;
168169
use function strlen;
169170
use function strtolower;
170171
use function substr;
172+
use function uksort;
171173
use function usort;
172174
use const PHP_INT_MAX;
173175
use const PHP_INT_MIN;
@@ -5296,30 +5298,28 @@ private function generalizeVariableTypeHolders(
52965298
array $otherVariableTypeHolders,
52975299
): array
52985300
{
5299-
$sortByExprStringLength = static function (string $exprA, string $exprB): int {
5300-
return strlen($exprA) <=> strlen($exprB);
5301-
};
5302-
5303-
uksort($variableTypeHolders, $sortByExprStringLength);
5304-
uksort($otherVariableTypeHolders, $sortByExprStringLength);
5301+
uksort($variableTypeHolders, static fn (string $exprA, string $exprB): int => strlen($exprA) <=> strlen($exprB));
53055302

53065303
$changedArrays = [];
53075304
foreach ($variableTypeHolders as $variableExprString => $variableTypeHolder) {
53085305
if (!isset($otherVariableTypeHolders[$variableExprString])) {
53095306
continue;
53105307
}
53115308

5312-
foreach($changedArrays as $changedExpr) {
5313-
if (str_starts_with($variableExprString, $changedExpr)) {
5309+
foreach ($changedArrays as $changedExpr) {
5310+
if (
5311+
str_contains($variableExprString, $changedExpr . '[')
5312+
|| str_contains($variableExprString, '[' . $changedExpr . ']')
5313+
) {
5314+
unset($variableTypeHolders[$variableExprString]);
53145315
continue 2;
53155316
}
53165317
}
53175318

53185319
$generalizedType = $this->generalizeType($variableTypeHolder->getType(), $otherVariableTypeHolders[$variableExprString]->getType(), 0);
53195320
if (
5320-
$generalizedType->isArray()->yes() &&
5321-
!$generalizedType->equals($variableTypeHolder->getType()))
5322-
{
5321+
!$generalizedType->equals($variableTypeHolder->getType())
5322+
) {
53235323
$changedArrays[] = $variableExprString;
53245324
}
53255325
$variableTypeHolders[$variableExprString] = new ExpressionTypeHolder(

tests/PHPStan/Analyser/nsrt/pr-4372.php renamed to tests/PHPStan/Analyser/nsrt/pr-4390.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?php
22

3-
namespace PR4372;
3+
namespace PR4390;
44

55
use function PHPStan\debugScope;
66
use function PHPStan\Testing\assertType;
@@ -15,5 +15,5 @@ function (string $s): void {
1515
}
1616

1717
assertType('non-empty-array<int<0, 9>, non-empty-array<int<0, 9>, string>>', $locations);
18-
assertType('non-empty-array<int<0, 9>, string>>', $locations[0]);
18+
assertType('non-empty-array<int<0, 9>, string>', $locations[0]);
1919
};

0 commit comments

Comments
 (0)