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(
5697
5697
} else {
5698
5698
$ varForSetOffsetValue = $ var ->var ;
5699
5699
}
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
+ }
5705
5714
$ dimFetchStack [] = $ var ;
5706
5715
$ var = $ var ->var ;
5707
5716
}
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