File tree Expand file tree Collapse file tree
tests/PHPStan/Analyser/nsrt Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -936,6 +936,18 @@ public function specifyTypesInCondition(
936936 && !$ scope ->getType ($ var ->var ) instanceof MixedType
937937 ) {
938938 $ dimType = $ scope ->getType ($ var ->dim );
939+ $ varType = $ scope ->getType ($ var ->var );
940+
941+ if ($ varType ->isArray ()->yes ()) {
942+ $ types = $ types ->unionWith (
943+ $ this ->create (
944+ $ var ->var ,
945+ new NonEmptyArrayType (),
946+ $ context ,
947+ $ scope ,
948+ )->setRootExpr ($ expr ),
949+ );
950+ }
939951
940952 if ($ dimType instanceof ConstantIntegerType || $ dimType instanceof ConstantStringType) {
941953 $ types = $ types ->unionWith (
Original file line number Diff line number Diff line change 1+ <?php
2+
3+ namespace Bug13674a ;
4+
5+ use function assert ;
6+ use function PHPStan \Testing \assertType ;
7+
8+ class HelloWorld
9+ {
10+ /**
11+ * @param array<int> $arrayA
12+ * @param list<int> $listA
13+ */
14+ public function sayHello ($ arrayA , $ listA , int $ i ): void
15+ {
16+ if (isset ($ arrayA [$ i ])) {
17+ assertType ('non-empty-array<int> ' , $ arrayA );
18+ } else {
19+ assertType ('array<int> ' , $ arrayA );
20+ }
21+ assertType ('array<int> ' , $ arrayA );
22+
23+ if (isset ($ listA [$ i ])) {
24+ assertType ('non-empty-list<int> ' , $ listA );
25+ } else {
26+ assertType ('list<int> ' , $ listA );
27+ }
28+ assertType ('list<int> ' , $ listA );
29+ }
30+ }
You can’t perform that action at this time.
0 commit comments