File tree Expand file tree Collapse file tree 3 files changed +46
-5
lines changed
tests/PHPStan/Rules/Properties Expand file tree Collapse file tree 3 files changed +46
-5
lines changed Original file line number Diff line number Diff line change @@ -5609,11 +5609,24 @@ private function processAssignVar(
5609
5609
} else {
5610
5610
$ varForSetOffsetValue = $ var ->var ;
5611
5611
}
5612
- $ assignedPropertyExpr = new SetOffsetValueTypeExpr (
5613
- $ varForSetOffsetValue ,
5614
- $ var ->dim ,
5615
- $ assignedPropertyExpr ,
5616
- );
5612
+
5613
+ if (
5614
+ $ var === $ originalVar
5615
+ && $ var ->dim !== null
5616
+ && $ scope ->hasExpressionType ($ var )->yes ()
5617
+ ) {
5618
+ $ assignedPropertyExpr = new SetExistingOffsetValueTypeExpr (
5619
+ $ varForSetOffsetValue ,
5620
+ $ var ->dim ,
5621
+ $ assignedPropertyExpr ,
5622
+ );
5623
+ } else {
5624
+ $ assignedPropertyExpr = new SetOffsetValueTypeExpr (
5625
+ $ varForSetOffsetValue ,
5626
+ $ var ->dim ,
5627
+ $ assignedPropertyExpr ,
5628
+ );
5629
+ }
5617
5630
$ dimFetchStack [] = $ var ;
5618
5631
$ var = $ var ->var ;
5619
5632
}
Original file line number Diff line number Diff line change @@ -935,4 +935,11 @@ public function testBug11777(): void
935
935
$ this ->analyse ([__DIR__ . '/data/bug-11777.php ' ], []);
936
936
}
937
937
938
+ public function testBug13035 (): void
939
+ {
940
+ $ this ->checkExplicitMixed = true ;
941
+ $ this ->checkImplicitMixed = true ;
942
+ $ this ->analyse ([__DIR__ . '/data/bug-13035.php ' ], []);
943
+ }
944
+
938
945
}
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