11<?php
22
3+ namespace Bug11276 ;
4+
35use function PHPStan \Testing \assertType ;
46
5- function sayEqualArrayShape (int $ i , $ arr ): void
7+ function doFoo (int $ i, int $ j , $ arr ): void
68{
79 if (false || array_key_exists ($ i , $ arr )) {
810 assertType ('non-empty-array ' , $ arr );
@@ -20,7 +22,37 @@ function sayEqualArrayShape(int $i, $arr): void
2022 assertType ('mixed ' , $ arr );
2123 }
2224
25+ if (array_key_exists ($ i , $ arr ) || array_key_exists ($ j , $ arr )) {
26+ assertType ('non-empty-array ' , $ arr );
27+ }
28+
29+ if (!array_key_exists ($ j , $ arr )) {
30+ if (array_key_exists ($ i , $ arr ) || array_key_exists ($ j , $ arr )) {
31+ assertType ('non-empty-array ' , $ arr );
32+ }
33+ }
34+ if (!array_key_exists ($ i , $ arr )) {
35+ if (array_key_exists ($ i , $ arr ) || array_key_exists ($ j , $ arr )) {
36+ assertType ('non-empty-array ' , $ arr );
37+ }
38+ }
39+
2340 if (array_key_exists ($ i , $ arr )) {
2441 assertType ('non-empty-array ' , $ arr );
2542 }
2643}
44+
45+ function doBar ($ j , $ arr ) {
46+ $ i = 1 ;
47+ if (!array_key_exists ($ i , $ arr )) {
48+ if (array_key_exists ($ i , $ arr ) || array_key_exists ($ j , $ arr )) {
49+ assertType ('non-empty-array<mixed~1, mixed> ' , $ arr );
50+ }
51+ }
52+
53+ if (!array_key_exists ($ i , $ arr )) {
54+ if (array_key_exists ($ j , $ arr ) || array_key_exists ($ i , $ arr )) {
55+ assertType ('non-empty-array<mixed~1, mixed> ' , $ arr );
56+ }
57+ }
58+ }
0 commit comments