Skip to content

Commit d3189c7

Browse files
phpstan-botclaude
andcommitted
Add tests for 5 and 6 level deep nested array assignments
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 72c1e75 commit d3189c7

1 file changed

Lines changed: 43 additions & 0 deletions

File tree

tests/PHPStan/Analyser/nsrt/bug-13637.php

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,49 @@ function fourLevelsDeep() : array {
4444
return $final;
4545
}
4646

47+
/**
48+
* @return array<int, array<int, array<int, array<int, array<int, array{abc: int, def: int, ghi: int}>>>>>
49+
*/
50+
function fiveLevelsDeep() : array {
51+
$final = [];
52+
53+
for ($i = 0; $i < 5; $i++) {
54+
$j = $i * 2;
55+
$k = $j + 1;
56+
$l = $i * 3;
57+
$m = $i + 10;
58+
$final[$i][$j][$k][$l][$m]['abc'] = $i;
59+
$final[$i][$j][$k][$l][$m]['def'] = $i;
60+
$final[$i][$j][$k][$l][$m]['ghi'] = $i;
61+
62+
assertType("array{abc: int<0, 4>, def: int<0, 4>, ghi: int<0, 4>}", $final[$i][$j][$k][$l][$m]);
63+
}
64+
65+
return $final;
66+
}
67+
68+
/**
69+
* @return array<int, array<int, array<int, array<int, array<int, array<int, array{abc: int, def: int, ghi: int}>>>>>>
70+
*/
71+
function sixLevelsDeep() : array {
72+
$final = [];
73+
74+
for ($i = 0; $i < 5; $i++) {
75+
$j = $i * 2;
76+
$k = $j + 1;
77+
$l = $i * 3;
78+
$m = $i + 10;
79+
$n = $i + 20;
80+
$final[$i][$j][$k][$l][$m][$n]['abc'] = $i;
81+
$final[$i][$j][$k][$l][$m][$n]['def'] = $i;
82+
$final[$i][$j][$k][$l][$m][$n]['ghi'] = $i;
83+
84+
assertType("array{abc: int<0, 4>, def: int<0, 4>, ghi: int<0, 4>}", $final[$i][$j][$k][$l][$m][$n]);
85+
}
86+
87+
return $final;
88+
}
89+
4790
/**
4891
* @return array<int, array<int, array{abc: int, def: int, ghi: int}>>
4992
*/

0 commit comments

Comments
 (0)