@@ -116,14 +116,36 @@ public function countConstantArray(array $anotherArray): void {
116116assertType ('int<1, max> ' , count ($ arr , COUNT_RECURSIVE ));
117117
118118$ arr = [1 , 2 , 3 , $ anotherArray ];
119+ assertType ('array{1, 2, 3, array} ' , $ arr );
119120assertType ('4 ' , count ($ arr ));
120121assertType ('4 ' , count ($ arr , COUNT_NORMAL ));
121122assertType ('int<1, max> ' , count ($ arr , COUNT_RECURSIVE )); // could be int<4, max>
122123
123124$ arr = [1 , 2 , 3 ] + $ anotherArray ;
124125assertType ('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