forked from phpstan/phpstan-src
/
bug-7805.php
33 lines (29 loc) · 1.06 KB
/
bug-7805.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
<?php declare(strict_types = 1);
use function PHPStan\Testing\assertNativeType;
use function PHPStan\Testing\assertType;
/**
* @phpstan-param array{help?: null} $params
*/
function foo(array $params)
{
assertType('array{help?: null}', $params);
assertNativeType('array', $params);
if (array_key_exists('help', $params)) {
assertType('array{help: null}', $params);
assertNativeType("array&hasOffset('help')", $params);
unset($params['help']);
assertType('array{}', $params);
assertNativeType("array<mixed~'help', mixed>", $params);
$params = $params === [] ? ['list'] : $params;
assertType("array{'list'}", $params);
assertNativeType("array{'list'}", $params);
// assertNativeType("array<mixed~'help', mixed>", $params); // not working yet
array_unshift($params, 'help');
assertType("array{'help', 'list'}", $params);
assertNativeType("array{'list'}", $params);
// assertNativeType("array<mixed~'help', mixed>", $params); // not working yet
}
assertType("array{}|array{'help', 'list'}", $params);
assertNativeType('array', $params);
return $params;
}