forked from phpstan/phpstan-src
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbug-4700.php
49 lines (41 loc) · 1.38 KB
/
bug-4700.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<?php
namespace Bug4700;
use function PHPStan\Testing\assertType;
function(array $array, int $count): void {
if ($count < 1) {
return;
}
assertType('int<1, max>', $count);
$a = [];
if (isset($array['a'])) $a[] = $array['a'];
if (isset($array['b'])) $a[] = $array['b'];
if (isset($array['c'])) $a[] = $array['c'];
if (isset($array['d'])) $a[] = $array['d'];
if (isset($array['e'])) $a[] = $array['e'];
if (count($a) >= $count) {
assertType('int<1, 5>', count($a));
assertType('array{0: mixed~null, 1?: mixed~null, 2?: mixed~null, 3?: mixed~null, 4?: mixed~null}', $a);
} else {
assertType('0', count($a));
assertType('array{}', $a);
}
};
function(array $array, int $count): void {
if ($count < 1) {
return;
}
assertType('int<1, max>', $count);
$a = [];
if (isset($array['a'])) $a[] = $array['a'];
if (isset($array['b'])) $a[] = $array['b'];
if (isset($array['c'])) $a[] = $array['c'];
if (isset($array['d'])) $a[] = $array['d'];
if (isset($array['e'])) $a[] = $array['e'];
if (count($a) > $count) {
assertType('int<2, 5>', count($a));
assertType('list{0: mixed~null, 1: mixed~null, 2?: mixed~null, 3?: mixed~null, 4?: mixed~null}', $a);
} else {
assertType('int<0, 5>', count($a)); // Could be int<0, 1>
assertType('array{}|array{0: mixed~null, 1?: mixed~null, 2?: mixed~null, 3?: mixed~null, 4?: mixed~null}', $a); // Could be array{}|array{0: mixed~null}
}
};