@@ -116,14 +116,36 @@ public function countConstantArray(array $anotherArray): void {
116116 assertType ('int<1, max> ' , count ($ arr , COUNT_RECURSIVE ));
117117
118118 $ arr = [1 , 2 , 3 , $ anotherArray ];
119+ assertType ('array{1, 2, 3, array} ' , $ arr );
119120 assertType ('4 ' , count ($ arr ));
120121 assertType ('4 ' , count ($ arr , COUNT_NORMAL ));
121122 assertType ('int<1, max> ' , count ($ arr , COUNT_RECURSIVE )); // could be int<4, max>
122123
123124 $ arr = [1 , 2 , 3 ] + $ anotherArray ;
124125 assertType ('non-empty-array&hasOffsetValue(0, 1)&hasOffsetValue(1, 2)&hasOffsetValue(2, 3) ' , $ arr );
125- assertType ('int<1, max> ' , count ($ arr )); // could be int<3, max>
126- assertType ('int<1, max> ' , count ($ arr , COUNT_NORMAL )); // could be int<3, max>
127- assertType ('int<1, max> ' , count ($ arr , COUNT_RECURSIVE ));
126+ assertType ('int<3, max> ' , count ($ arr ));
127+ assertType ('int<3, max> ' , count ($ arr , COUNT_NORMAL ));
128+ assertType ('int<1, max> ' , count ($ arr , COUNT_RECURSIVE )); // could be int<3, max>
129+ }
130+
131+ public function countAfterKeyExists (array $ array , int $ i ): void {
132+ if (array_key_exists (5 , $ array )) {
133+ assertType ('non-empty-array&hasOffset(5) ' , $ array );
134+ assertType ('int<1, max> ' , count ($ array ));
135+ }
136+
137+ if ($ array !== []) {
138+ assertType ('non-empty-array ' , $ array );
139+ assertType ('int<1, max> ' , count ($ array ));
140+ if (array_key_exists (5 , $ array )) {
141+ assertType ('non-empty-array&hasOffset(5) ' , $ array );
142+ assertType ('int<1, max> ' , count ($ array ));
143+
144+ if (array_key_exists (15 , $ array )) {
145+ assertType ('non-empty-array&hasOffset(15)&hasOffset(5) ' , $ array );
146+ assertType ('int<2, max> ' , count ($ array ));
147+ }
148+ }
149+ }
128150 }
129151}
0 commit comments