-
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathexample_phpstan.php
20 lines (14 loc) · 967 Bytes
/
example_phpstan.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
declare(strict_types=1);
require_once __DIR__ . '/../../vendor/autoload.php';
PHPStan\dumpType(Ngmy\Enum\Tests\Data\Enum1::FOO()); // Ngmy\Enum\Tests\Data\Enum1
$enumMap = Ngmy\Enum\EnumMap::new(Ngmy\Enum\Tests\Data\Enum1::class);
PHPStan\dumpType($enumMap); // Ngmy\Enum\EnumMap<Ngmy\Enum\Tests\Data\Enum1, mixed>
$enumMap[Ngmy\Enum\Tests\Data\Enum1::FOO()] = 1; // Good
$enumMap[Ngmy\Enum\Tests\Data\Enum2::FOO()] = 1; // No good
$enumSet = Ngmy\Enum\EnumSet::noneOf(Ngmy\Enum\Tests\Data\Enum1::class);
PHPStan\dumpType($enumSet); // Ngmy\Enum\EnumSet<Ngmy\Enum\Tests\Data\Enum1>
$enumSet[] = Ngmy\Enum\Tests\Data\Enum1::FOO(); // Good
$enumSet[] = Ngmy\Enum\Tests\Data\Enum2::FOO(); // No good
$enumSet = Ngmy\Enum\EnumSet::range(Ngmy\Enum\Tests\Data\Enum1::FOO(), Ngmy\Enum\Tests\Data\Enum1::BAZ()); // Good
$enumSet = Ngmy\Enum\EnumSet::range(Ngmy\Enum\Tests\Data\Enum1::FOO(), Ngmy\Enum\Tests\Data\Enum2::BAZ()); // Good. This is the false negative