forked from phpstan/phpstan-src
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathrange-function.php
More file actions
26 lines (21 loc) · 994 Bytes
/
range-function.php
File metadata and controls
26 lines (21 loc) · 994 Bytes
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
<?php // lint >= 8.3
use function PHPStan\Testing\assertType;
/** @var int $integer */
$integer = doFoo();
/** @var float $float */
$float = doFoo();
/** @var mixed $mixed */
$mixed = doFoo();
assertType('array{2, 3, 4, 5}', range(2, 5));
assertType('array{2, 4}', range(2, 5, 2));
assertType('array{2, 0}', range(2, '', 2));
assertType('array{2, 3, 4, 5}', range(2, 5, 1.0));
assertType('array{2.1, 3.1, 4.1}', range(2.1, 5));
assertType('non-empty-list<int>', range(2, 5, $integer));
assertType('non-empty-list<float|int>', range($float, 5, $integer));
assertType('non-empty-list<(float|int|string)>', range($float, $mixed, $integer));
assertType('non-empty-list<(float|int|string)>', range($integer, $mixed));
assertType('array{0: 1, 1?: 2}', range(1, doFoo() ? 1 : 2));
assertType('array{0: -1, 1: 0, 2: 1, 3?: 2}|array{0: 1, 1?: 2}', range(doFoo() ? -1 : 1, doFoo() ? 1 : 2));
assertType('array{3, 2, 1, 0, -1}', range(3, -1));
assertType('non-empty-list<int<0, 50>>', range(0, 50));