File tree Expand file tree Collapse file tree 3 files changed +42
-5
lines changed
tests/PHPStan/Rules/Properties Expand file tree Collapse file tree 3 files changed +42
-5
lines changed Original file line number Diff line number Diff line change @@ -5697,11 +5697,20 @@ private function processAssignVar(
56975697 } else {
56985698 $ varForSetOffsetValue = $ var ->var ;
56995699 }
5700- $ assignedPropertyExpr = new SetOffsetValueTypeExpr (
5701- $ varForSetOffsetValue ,
5702- $ var ->dim ,
5703- $ assignedPropertyExpr ,
5704- );
5700+
5701+ if ($ scope ->hasExpressionType ($ var )->yes ()) {
5702+ $ assignedPropertyExpr = new SetExistingOffsetValueTypeExpr (
5703+ $ varForSetOffsetValue ,
5704+ $ var ->dim ,
5705+ $ assignedPropertyExpr ,
5706+ );
5707+ } else {
5708+ $ assignedPropertyExpr = new SetOffsetValueTypeExpr (
5709+ $ varForSetOffsetValue ,
5710+ $ var ->dim ,
5711+ $ assignedPropertyExpr ,
5712+ );
5713+ }
57055714 $ dimFetchStack [] = $ var ;
57065715 $ var = $ var ->var ;
57075716 }
Original file line number Diff line number Diff line change @@ -935,4 +935,11 @@ public function testBug11777(): void
935935 $ this ->analyse ([__DIR__ . '/data/bug-11777.php ' ], []);
936936 }
937937
938+ public function testBug13035 (): void
939+ {
940+ $ this ->checkExplicitMixed = true ;
941+ $ this ->checkImplicitMixed = true ;
942+ $ this ->analyse ([__DIR__ . '/data/bug-13035.php ' ], []);
943+ }
944+
938945}
Original file line number Diff line number Diff line change 1+ <?php
2+
3+ namespace Bug13035 ;
4+
5+ use function PHPStan \debugScope ;
6+ use function PHPStan \Testing \assertType ;
7+
8+ class HelloWorld
9+ {
10+ /**
11+ * @var list<int>
12+ */
13+ public array $ list = [];
14+
15+ public function bug (int $ offset ): void
16+ {
17+ if (isset ($ this ->list [$ offset ])) {
18+ $ this ->list [$ offset ] = 123 ;
19+ }
20+ }
21+ }
You can’t perform that action at this time.
0 commit comments