This commit is contained in:
Александр Бабаев 2025-02-04 12:40:43 +03:00
parent 4bcb4c60dd
commit 50343d5a87
372 changed files with 9019 additions and 6684 deletions

View File

@ -5,7 +5,7 @@
<tool tool_name="PHPUnit"> <tool tool_name="PHPUnit">
<cache> <cache>
<versions> <versions>
<info id="локальныйD:\Internet\php\tools\phpunit\phpunit_2.phar" version="11.5.6" /> <info id="локальный\vendor/autoload.php" version="12.0" />
</versions> </versions>
</cache> </cache>
</tool> </tool>

2
.idea/php.xml generated
View File

@ -46,7 +46,7 @@
</component> </component>
<component name="PhpUnit"> <component name="PhpUnit">
<phpunit_settings> <phpunit_settings>
<PhpUnitSettings load_method="PHPUNIT_PHAR" custom_loader_path="$PROJECT_DIR$/vendor/autoload.php" phpunit_phar_path="D:/Internet/php/tools/phpunit/phpunit_2.phar" /> <PhpUnitSettings custom_loader_path="$PROJECT_DIR$/vendor/autoload.php" phpunit_phar_path="$PROJECT_DIR$/../../Internet/php/tools/phpunit/phpunit_2.phar" />
</phpunit_settings> </phpunit_settings>
</component> </component>
<component name="PsalmOptionsConfiguration"> <component name="PsalmOptionsConfiguration">

2
.idea/phpunit.xml generated
View File

@ -3,7 +3,7 @@
<component name="PHPUnit"> <component name="PHPUnit">
<option name="directories"> <option name="directories">
<list> <list>
<option value="E:\MyComponents\anb_php_components_pack\tests" /> <option value="D:\my_projects\anb_php_components_pack\tests" />
</list> </list>
</option> </option>
</component> </component>

View File

@ -1,7 +1,7 @@
{ {
"name": "goodboyalex/php_components_pack", "name": "goodboyalex/php_components_pack",
"description": "[RU] Набор компонентов для сайта на PHP / [EN] A set of components for PHP website", "description": "[RU] Набор компонентов для сайта на PHP / [EN] A set of components for PHP website",
"minimum-stability": "dev", "minimum-stability": "stable",
"keywords": [ "keywords": [
"components" "components"
], ],

551
composer.lock generated

File diff suppressed because it is too large Load Diff

View File

@ -57,4 +57,30 @@ final class ObjectArray implements ArrayAccess, IteratorAggregate, Countable, IS
{ {
return $this->Container; return $this->Container;
} }
/**
* Очищает массив объектов, хранящийся в данном классе.
*
* @return void
*/
public function Clear (): void
{
// Очищаем массив
unset($this->Container);
// Создаем новый массив
$this->Container = [];
}
/**
* Объединяет массив объектов, хранящийся в данном классе, с массивом объектов, переданным в качестве параметра.
*
* @param array $objects Массив объектов, который будет объединен с массивом объектов, хранящимся в данном классе.
*
* @return void
*/
public function Merge (array $objects): void
{
$this->Container = array_merge($this->Container, $objects);
}
} }

View File

@ -122,46 +122,194 @@ class ObjectArrayTest extends TestCase
public function testDelete () public function testDelete ()
{ {
$this->PrepareForTest();
$array = [
new A("a", 3, true),
new A("c", 2, false),
new A("b", 1, true),
];
$a_Array = new ObjectArray($array);
$a_Array->Delete(fn (A $a): bool => $a->b == 3);
$cnt = $a_Array->Count();
$this->assertEquals(2, $cnt);
}
public function testClear ()
{
$this->PrepareForTest();
$array = [
new A("a", 3, true),
new A("c", 2, false),
new A("b", 1, true),
];
$a_Array = new ObjectArray($array);
$a_Array->Clear();
$cnt = $a_Array->Count();
$this->assertEquals(0, $cnt);
}
public function testMerge ()
{
$this->PrepareForTest();
$array = [
new A("a", 3, true),
new A("c", 2, false),
new A("b", 1, true),
];
$array2 = [
new A("d", 4, true),
new A("e", 5, false),
new A("f", 6, true),
];
$a_Array = new ObjectArray($array);
$a_Array->Merge($array2);
$cnt = $a_Array->Count();
$this->assertEquals(6, $cnt);
$sr = $a_Array->Search('a', 'f');
$this->assertEquals(6, $sr->b);
} }
public function testMaxBy () public function testMaxBy ()
{ {
$this->PrepareForTest();
$array = [
new A("a", 3, true),
new A("c", 2, false),
new A("b", 1, true),
];
$a_Array = new ObjectArray($array);
$sr = $a_Array->MaxBy(fn (A $a) => $a->b);
$this->assertEquals("a", $sr->a);
} }
public function testGetColumn () public function testGetColumn ()
{ {
$this->PrepareForTest();
$array = [
new A("a", 3, true),
new A("c", 2, false),
new A("b", 1, true),
];
$a_Array = new ObjectArray($array);
$sr = $a_Array->GetColumn('a', fn (A $a): bool => $a->b < 3);
$this->assertIsArray($sr);
$this->assertSame(['c', 'b'], $sr);
} }
public function testToArray () public function testToArray ()
{ {
$this->PrepareForTest();
$array = [
new A("a", 3, true),
new A("c", 2, false),
new A("b", 1, true),
];
$a_Array = new ObjectArray($array);
$sr = $a_Array->ToArray();
$this->assertIsArray($sr);
$this->assertSame($array, $sr);
} }
public function testMinBy () public function testMinBy ()
{ {
$this->PrepareForTest();
$array = [
new A("a", 3, true),
new A("c", 2, false),
new A("b", 1, true),
];
$a_Array = new ObjectArray($array);
$sr = $a_Array->MinBy(fn (A $a) => $a->b);
$this->assertEquals("b", $sr->a);
} }
public function testIsExist () public function testIsExist ()
{ {
$this->PrepareForTest();
} $array = [
new A("a", 3, true),
new A("c", 2, false),
new A("b", 1, true),
];
public function testSortCallback () $a_Array = new ObjectArray($array);
{
$srTrue = $a_Array->IsExist(fn (A $a) => $a->b == 1);
$srFalse = $a_Array->IsExist(fn (A $a) => $a->b == 5);
$this->assertTrue($srTrue);
$this->assertFalse($srFalse);
} }
public function testUpdate () public function testUpdate ()
{ {
$this->PrepareForTest();
$array = [
new A("a", 3, true),
new A("c", 2, false),
new A("b", 1, true),
];
$a_Array = new ObjectArray($array);
$a_Array->Update([new A("d", 3, true)], fn (A $a) => $a->a == "a");
$sr = $a_Array->Search("a", "d");
$this->assertEquals("3", $sr->b);
$this->assertTrue($sr->c);
} }
public function testGetRow () public function testGetRow ()
{ {
$this->PrepareForTest();
$array = [
new A("a", 3, true),
new A("c", 2, false),
new A("b", 1, true),
];
$a_Array = new ObjectArray($array);
$sr = $a_Array->GetRow(fn (A $a): bool => $a->b == 3);
$this->assertInstanceOf(A::class, $sr);
$this->assertEquals('a', $sr->a);
$this->assertTrue($sr->c);
} }
} }

View File

@ -32,6 +32,11 @@ class InstalledVersions
*/ */
private static $installed; private static $installed;
/**
* @var bool
*/
private static $installedIsLocalDir;
/** /**
* @var bool|null * @var bool|null
*/ */
@ -309,6 +314,12 @@ class InstalledVersions
{ {
self::$installed = $data; self::$installed = $data;
self::$installedByVendor = array(); self::$installedByVendor = array();
// when using reload, we disable the duplicate protection to ensure that self::$installed data is
// always returned, but we cannot know whether it comes from the installed.php in __DIR__ or not,
// so we have to assume it does not, and that may result in duplicate data being returned when listing
// all installed packages for example
self::$installedIsLocalDir = false;
} }
/** /**
@ -322,19 +333,27 @@ class InstalledVersions
} }
$installed = array(); $installed = array();
$copiedLocalDir = false;
if (self::$canGetVendors) { if (self::$canGetVendors) {
$selfDir = strtr(__DIR__, '\\', '/');
foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) { foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) {
$vendorDir = strtr($vendorDir, '\\', '/');
if (isset(self::$installedByVendor[$vendorDir])) { if (isset(self::$installedByVendor[$vendorDir])) {
$installed[] = self::$installedByVendor[$vendorDir]; $installed[] = self::$installedByVendor[$vendorDir];
} elseif (is_file($vendorDir.'/composer/installed.php')) { } elseif (is_file($vendorDir.'/composer/installed.php')) {
/** @var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>} $required */ /** @var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>} $required */
$required = require $vendorDir.'/composer/installed.php'; $required = require $vendorDir.'/composer/installed.php';
$installed[] = self::$installedByVendor[$vendorDir] = $required; self::$installedByVendor[$vendorDir] = $required;
if (null === self::$installed && strtr($vendorDir.'/composer', '\\', '/') === strtr(__DIR__, '\\', '/')) { $installed[] = $required;
self::$installed = $installed[count($installed) - 1]; if (self::$installed === null && $vendorDir.'/composer' === $selfDir) {
self::$installed = $required;
self::$installedIsLocalDir = true;
} }
} }
if (self::$installedIsLocalDir && $vendorDir.'/composer' === $selfDir) {
$copiedLocalDir = true;
}
} }
} }
@ -350,7 +369,7 @@ class InstalledVersions
} }
} }
if (self::$installed !== array()) { if (self::$installed !== array() && !$copiedLocalDir) {
$installed[] = self::$installed; $installed[] = self::$installed;
} }

View File

@ -7,32 +7,6 @@ $baseDir = dirname($vendorDir);
return array( return array(
'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php', 'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php',
'DeepCopy\\DeepCopy' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/DeepCopy.php',
'DeepCopy\\Exception\\CloneException' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/Exception/CloneException.php',
'DeepCopy\\Exception\\PropertyException' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/Exception/PropertyException.php',
'DeepCopy\\Filter\\ChainableFilter' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/Filter/ChainableFilter.php',
'DeepCopy\\Filter\\Doctrine\\DoctrineCollectionFilter' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/Filter/Doctrine/DoctrineCollectionFilter.php',
'DeepCopy\\Filter\\Doctrine\\DoctrineEmptyCollectionFilter' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/Filter/Doctrine/DoctrineEmptyCollectionFilter.php',
'DeepCopy\\Filter\\Doctrine\\DoctrineProxyFilter' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/Filter/Doctrine/DoctrineProxyFilter.php',
'DeepCopy\\Filter\\Filter' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/Filter/Filter.php',
'DeepCopy\\Filter\\KeepFilter' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/Filter/KeepFilter.php',
'DeepCopy\\Filter\\ReplaceFilter' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/Filter/ReplaceFilter.php',
'DeepCopy\\Filter\\SetNullFilter' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/Filter/SetNullFilter.php',
'DeepCopy\\Matcher\\Doctrine\\DoctrineProxyMatcher' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/Matcher/Doctrine/DoctrineProxyMatcher.php',
'DeepCopy\\Matcher\\Matcher' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/Matcher/Matcher.php',
'DeepCopy\\Matcher\\PropertyMatcher' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/Matcher/PropertyMatcher.php',
'DeepCopy\\Matcher\\PropertyNameMatcher' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/Matcher/PropertyNameMatcher.php',
'DeepCopy\\Matcher\\PropertyTypeMatcher' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/Matcher/PropertyTypeMatcher.php',
'DeepCopy\\Reflection\\ReflectionHelper' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/Reflection/ReflectionHelper.php',
'DeepCopy\\TypeFilter\\Date\\DateIntervalFilter' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/TypeFilter/Date/DateIntervalFilter.php',
'DeepCopy\\TypeFilter\\Date\\DatePeriodFilter' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/TypeFilter/Date/DatePeriodFilter.php',
'DeepCopy\\TypeFilter\\ReplaceFilter' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/TypeFilter/ReplaceFilter.php',
'DeepCopy\\TypeFilter\\ShallowCopyFilter' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/TypeFilter/ShallowCopyFilter.php',
'DeepCopy\\TypeFilter\\Spl\\ArrayObjectFilter' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/TypeFilter/Spl/ArrayObjectFilter.php',
'DeepCopy\\TypeFilter\\Spl\\SplDoublyLinkedList' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/TypeFilter/Spl/SplDoublyLinkedList.php',
'DeepCopy\\TypeFilter\\Spl\\SplDoublyLinkedListFilter' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/TypeFilter/Spl/SplDoublyLinkedListFilter.php',
'DeepCopy\\TypeFilter\\TypeFilter' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/TypeFilter/TypeFilter.php',
'DeepCopy\\TypeMatcher\\TypeMatcher' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/TypeMatcher/TypeMatcher.php',
'PHPUnit\\Event\\Application\\Finished' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Application/Finished.php', 'PHPUnit\\Event\\Application\\Finished' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Application/Finished.php',
'PHPUnit\\Event\\Application\\FinishedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Application/FinishedSubscriber.php', 'PHPUnit\\Event\\Application\\FinishedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Application/FinishedSubscriber.php',
'PHPUnit\\Event\\Application\\Started' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Application/Started.php', 'PHPUnit\\Event\\Application\\Started' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Application/Started.php',
@ -90,10 +64,11 @@ return array(
'PHPUnit\\Event\\Telemetry\\Info' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Telemetry/Info.php', 'PHPUnit\\Event\\Telemetry\\Info' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Telemetry/Info.php',
'PHPUnit\\Event\\Telemetry\\MemoryMeter' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Telemetry/MemoryMeter.php', 'PHPUnit\\Event\\Telemetry\\MemoryMeter' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Telemetry/MemoryMeter.php',
'PHPUnit\\Event\\Telemetry\\MemoryUsage' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Telemetry/MemoryUsage.php', 'PHPUnit\\Event\\Telemetry\\MemoryUsage' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Telemetry/MemoryUsage.php',
'PHPUnit\\Event\\Telemetry\\Php81GarbageCollectorStatusProvider' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Telemetry/Php81GarbageCollectorStatusProvider.php',
'PHPUnit\\Event\\Telemetry\\Php83GarbageCollectorStatusProvider' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Telemetry/Php83GarbageCollectorStatusProvider.php',
'PHPUnit\\Event\\Telemetry\\Snapshot' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Telemetry/Snapshot.php', 'PHPUnit\\Event\\Telemetry\\Snapshot' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Telemetry/Snapshot.php',
'PHPUnit\\Event\\Telemetry\\StopWatch' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Telemetry/StopWatch.php', 'PHPUnit\\Event\\Telemetry\\StopWatch' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Telemetry/StopWatch.php',
'PHPUnit\\Event\\Telemetry\\System' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Telemetry/System.php', 'PHPUnit\\Event\\Telemetry\\System' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Telemetry/System.php',
'PHPUnit\\Event\\Telemetry\\SystemGarbageCollectorStatusProvider' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Telemetry/SystemGarbageCollectorStatusProvider.php',
'PHPUnit\\Event\\Telemetry\\SystemMemoryMeter' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Telemetry/SystemMemoryMeter.php', 'PHPUnit\\Event\\Telemetry\\SystemMemoryMeter' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Telemetry/SystemMemoryMeter.php',
'PHPUnit\\Event\\Telemetry\\SystemStopWatch' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Telemetry/SystemStopWatch.php', 'PHPUnit\\Event\\Telemetry\\SystemStopWatch' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Telemetry/SystemStopWatch.php',
'PHPUnit\\Event\\Telemetry\\SystemStopWatchWithOffset' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Telemetry/SystemStopWatchWithOffset.php', 'PHPUnit\\Event\\Telemetry\\SystemStopWatchWithOffset' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Telemetry/SystemStopWatchWithOffset.php',
@ -200,8 +175,14 @@ return array(
'PHPUnit\\Event\\Test\\MarkedIncompleteSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Outcome/MarkedIncompleteSubscriber.php', 'PHPUnit\\Event\\Test\\MarkedIncompleteSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Outcome/MarkedIncompleteSubscriber.php',
'PHPUnit\\Event\\Test\\MockObjectCreated' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/MockObjectCreated.php', 'PHPUnit\\Event\\Test\\MockObjectCreated' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/MockObjectCreated.php',
'PHPUnit\\Event\\Test\\MockObjectCreatedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/MockObjectCreatedSubscriber.php', 'PHPUnit\\Event\\Test\\MockObjectCreatedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/MockObjectCreatedSubscriber.php',
'PHPUnit\\Event\\Test\\MockObjectForAbstractClassCreated' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/MockObjectForAbstractClassCreated.php',
'PHPUnit\\Event\\Test\\MockObjectForAbstractClassCreatedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/MockObjectForAbstractClassCreatedSubscriber.php',
'PHPUnit\\Event\\Test\\MockObjectForIntersectionOfInterfacesCreated' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/MockObjectForIntersectionOfInterfacesCreated.php', 'PHPUnit\\Event\\Test\\MockObjectForIntersectionOfInterfacesCreated' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/MockObjectForIntersectionOfInterfacesCreated.php',
'PHPUnit\\Event\\Test\\MockObjectForIntersectionOfInterfacesCreatedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/MockObjectForIntersectionOfInterfacesCreatedSubscriber.php', 'PHPUnit\\Event\\Test\\MockObjectForIntersectionOfInterfacesCreatedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/MockObjectForIntersectionOfInterfacesCreatedSubscriber.php',
'PHPUnit\\Event\\Test\\MockObjectForTraitCreated' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/MockObjectForTraitCreated.php',
'PHPUnit\\Event\\Test\\MockObjectForTraitCreatedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/MockObjectForTraitCreatedSubscriber.php',
'PHPUnit\\Event\\Test\\MockObjectFromWsdlCreated' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/MockObjectFromWsdlCreated.php',
'PHPUnit\\Event\\Test\\MockObjectFromWsdlCreatedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/MockObjectFromWsdlCreatedSubscriber.php',
'PHPUnit\\Event\\Test\\NoComparisonFailureException' => $vendorDir . '/phpunit/phpunit/src/Event/Exception/NoComparisonFailureException.php', 'PHPUnit\\Event\\Test\\NoComparisonFailureException' => $vendorDir . '/phpunit/phpunit/src/Event/Exception/NoComparisonFailureException.php',
'PHPUnit\\Event\\Test\\NoticeTriggered' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Issue/NoticeTriggered.php', 'PHPUnit\\Event\\Test\\NoticeTriggered' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Issue/NoticeTriggered.php',
'PHPUnit\\Event\\Test\\NoticeTriggeredSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Issue/NoticeTriggeredSubscriber.php', 'PHPUnit\\Event\\Test\\NoticeTriggeredSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Issue/NoticeTriggeredSubscriber.php',
@ -243,6 +224,8 @@ return array(
'PHPUnit\\Event\\Test\\PrintedUnexpectedOutputSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/PrintedUnexpectedOutputSubscriber.php', 'PHPUnit\\Event\\Test\\PrintedUnexpectedOutputSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/PrintedUnexpectedOutputSubscriber.php',
'PHPUnit\\Event\\Test\\Skipped' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Outcome/Skipped.php', 'PHPUnit\\Event\\Test\\Skipped' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Outcome/Skipped.php',
'PHPUnit\\Event\\Test\\SkippedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Outcome/SkippedSubscriber.php', 'PHPUnit\\Event\\Test\\SkippedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Outcome/SkippedSubscriber.php',
'PHPUnit\\Event\\Test\\TestProxyCreated' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/TestProxyCreated.php',
'PHPUnit\\Event\\Test\\TestProxyCreatedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/TestProxyCreatedSubscriber.php',
'PHPUnit\\Event\\Test\\TestStubCreated' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/TestStubCreated.php', 'PHPUnit\\Event\\Test\\TestStubCreated' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/TestStubCreated.php',
'PHPUnit\\Event\\Test\\TestStubCreatedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/TestStubCreatedSubscriber.php', 'PHPUnit\\Event\\Test\\TestStubCreatedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/TestStubCreatedSubscriber.php',
'PHPUnit\\Event\\Test\\TestStubForIntersectionOfInterfacesCreated' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/TestStubForIntersectionOfInterfacesCreated.php', 'PHPUnit\\Event\\Test\\TestStubForIntersectionOfInterfacesCreated' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/TestStubForIntersectionOfInterfacesCreated.php',
@ -266,11 +249,8 @@ return array(
'PHPUnit\\Framework\\Attributes\\Before' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/Before.php', 'PHPUnit\\Framework\\Attributes\\Before' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/Before.php',
'PHPUnit\\Framework\\Attributes\\BeforeClass' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/BeforeClass.php', 'PHPUnit\\Framework\\Attributes\\BeforeClass' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/BeforeClass.php',
'PHPUnit\\Framework\\Attributes\\CoversClass' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/CoversClass.php', 'PHPUnit\\Framework\\Attributes\\CoversClass' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/CoversClass.php',
'PHPUnit\\Framework\\Attributes\\CoversClassesThatExtendClass' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/CoversClassesThatExtendClass.php',
'PHPUnit\\Framework\\Attributes\\CoversClassesThatImplementInterface' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/CoversClassesThatImplementInterface.php',
'PHPUnit\\Framework\\Attributes\\CoversFunction' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/CoversFunction.php', 'PHPUnit\\Framework\\Attributes\\CoversFunction' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/CoversFunction.php',
'PHPUnit\\Framework\\Attributes\\CoversMethod' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/CoversMethod.php', 'PHPUnit\\Framework\\Attributes\\CoversMethod' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/CoversMethod.php',
'PHPUnit\\Framework\\Attributes\\CoversNamespace' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/CoversNamespace.php',
'PHPUnit\\Framework\\Attributes\\CoversNothing' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/CoversNothing.php', 'PHPUnit\\Framework\\Attributes\\CoversNothing' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/CoversNothing.php',
'PHPUnit\\Framework\\Attributes\\CoversTrait' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/CoversTrait.php', 'PHPUnit\\Framework\\Attributes\\CoversTrait' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/CoversTrait.php',
'PHPUnit\\Framework\\Attributes\\DataProvider' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/DataProvider.php', 'PHPUnit\\Framework\\Attributes\\DataProvider' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/DataProvider.php',
@ -296,7 +276,6 @@ return array(
'PHPUnit\\Framework\\Attributes\\PostCondition' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/PostCondition.php', 'PHPUnit\\Framework\\Attributes\\PostCondition' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/PostCondition.php',
'PHPUnit\\Framework\\Attributes\\PreCondition' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/PreCondition.php', 'PHPUnit\\Framework\\Attributes\\PreCondition' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/PreCondition.php',
'PHPUnit\\Framework\\Attributes\\PreserveGlobalState' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/PreserveGlobalState.php', 'PHPUnit\\Framework\\Attributes\\PreserveGlobalState' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/PreserveGlobalState.php',
'PHPUnit\\Framework\\Attributes\\RequiresEnvironmentVariable' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/RequiresEnvironmentVariable.php',
'PHPUnit\\Framework\\Attributes\\RequiresFunction' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/RequiresFunction.php', 'PHPUnit\\Framework\\Attributes\\RequiresFunction' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/RequiresFunction.php',
'PHPUnit\\Framework\\Attributes\\RequiresMethod' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/RequiresMethod.php', 'PHPUnit\\Framework\\Attributes\\RequiresMethod' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/RequiresMethod.php',
'PHPUnit\\Framework\\Attributes\\RequiresOperatingSystem' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/RequiresOperatingSystem.php', 'PHPUnit\\Framework\\Attributes\\RequiresOperatingSystem' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/RequiresOperatingSystem.php',
@ -316,11 +295,8 @@ return array(
'PHPUnit\\Framework\\Attributes\\TestWithJson' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/TestWithJson.php', 'PHPUnit\\Framework\\Attributes\\TestWithJson' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/TestWithJson.php',
'PHPUnit\\Framework\\Attributes\\Ticket' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/Ticket.php', 'PHPUnit\\Framework\\Attributes\\Ticket' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/Ticket.php',
'PHPUnit\\Framework\\Attributes\\UsesClass' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/UsesClass.php', 'PHPUnit\\Framework\\Attributes\\UsesClass' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/UsesClass.php',
'PHPUnit\\Framework\\Attributes\\UsesClassesThatExtendClass' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/UsesClassesThatExtendClass.php',
'PHPUnit\\Framework\\Attributes\\UsesClassesThatImplementInterface' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/UsesClassesThatImplementInterface.php',
'PHPUnit\\Framework\\Attributes\\UsesFunction' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/UsesFunction.php', 'PHPUnit\\Framework\\Attributes\\UsesFunction' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/UsesFunction.php',
'PHPUnit\\Framework\\Attributes\\UsesMethod' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/UsesMethod.php', 'PHPUnit\\Framework\\Attributes\\UsesMethod' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/UsesMethod.php',
'PHPUnit\\Framework\\Attributes\\UsesNamespace' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/UsesNamespace.php',
'PHPUnit\\Framework\\Attributes\\UsesTrait' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/UsesTrait.php', 'PHPUnit\\Framework\\Attributes\\UsesTrait' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/UsesTrait.php',
'PHPUnit\\Framework\\Attributes\\WithoutErrorHandler' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/WithoutErrorHandler.php', 'PHPUnit\\Framework\\Attributes\\WithoutErrorHandler' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/WithoutErrorHandler.php',
'PHPUnit\\Framework\\CodeCoverageException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/CodeCoverageException.php', 'PHPUnit\\Framework\\CodeCoverageException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/CodeCoverageException.php',
@ -402,26 +378,36 @@ return array(
'PHPUnit\\Framework\\MockObject\\Builder\\MethodNameMatch' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Builder/MethodNameMatch.php', 'PHPUnit\\Framework\\MockObject\\Builder\\MethodNameMatch' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Builder/MethodNameMatch.php',
'PHPUnit\\Framework\\MockObject\\Builder\\ParametersMatch' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Builder/ParametersMatch.php', 'PHPUnit\\Framework\\MockObject\\Builder\\ParametersMatch' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Builder/ParametersMatch.php',
'PHPUnit\\Framework\\MockObject\\Builder\\Stub' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Builder/Stub.php', 'PHPUnit\\Framework\\MockObject\\Builder\\Stub' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Builder/Stub.php',
'PHPUnit\\Framework\\MockObject\\CannotCloneTestDoubleForReadonlyClassException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/CannotCloneTestDoubleForReadonlyClassException.php',
'PHPUnit\\Framework\\MockObject\\CannotUseOnlyMethodsException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/CannotUseOnlyMethodsException.php', 'PHPUnit\\Framework\\MockObject\\CannotUseOnlyMethodsException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/CannotUseOnlyMethodsException.php',
'PHPUnit\\Framework\\MockObject\\ConfigurableMethod' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/ConfigurableMethod.php', 'PHPUnit\\Framework\\MockObject\\ConfigurableMethod' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/ConfigurableMethod.php',
'PHPUnit\\Framework\\MockObject\\DoubledCloneMethod' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Api/DoubledCloneMethod.php', 'PHPUnit\\Framework\\MockObject\\DoubledCloneMethod' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Api/DoubledCloneMethod.php',
'PHPUnit\\Framework\\MockObject\\ErrorCloneMethod' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Api/ErrorCloneMethod.php',
'PHPUnit\\Framework\\MockObject\\Exception' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/Exception.php', 'PHPUnit\\Framework\\MockObject\\Exception' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/Exception.php',
'PHPUnit\\Framework\\MockObject\\GeneratedAsMockObject' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Api/GeneratedAsMockObject.php',
'PHPUnit\\Framework\\MockObject\\GeneratedAsTestStub' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Api/GeneratedAsTestStub.php',
'PHPUnit\\Framework\\MockObject\\Generator\\CannotUseAddMethodsException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/CannotUseAddMethodsException.php',
'PHPUnit\\Framework\\MockObject\\Generator\\ClassIsEnumerationException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/ClassIsEnumerationException.php', 'PHPUnit\\Framework\\MockObject\\Generator\\ClassIsEnumerationException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/ClassIsEnumerationException.php',
'PHPUnit\\Framework\\MockObject\\Generator\\ClassIsFinalException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/ClassIsFinalException.php', 'PHPUnit\\Framework\\MockObject\\Generator\\ClassIsFinalException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/ClassIsFinalException.php',
'PHPUnit\\Framework\\MockObject\\Generator\\DoubledClass' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/DoubledClass.php',
'PHPUnit\\Framework\\MockObject\\Generator\\DoubledMethod' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/DoubledMethod.php',
'PHPUnit\\Framework\\MockObject\\Generator\\DoubledMethodSet' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/DoubledMethodSet.php',
'PHPUnit\\Framework\\MockObject\\Generator\\DuplicateMethodException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/DuplicateMethodException.php', 'PHPUnit\\Framework\\MockObject\\Generator\\DuplicateMethodException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/DuplicateMethodException.php',
'PHPUnit\\Framework\\MockObject\\Generator\\Exception' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/Exception.php', 'PHPUnit\\Framework\\MockObject\\Generator\\Exception' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/Exception.php',
'PHPUnit\\Framework\\MockObject\\Generator\\Generator' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/Generator.php', 'PHPUnit\\Framework\\MockObject\\Generator\\Generator' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/Generator.php',
'PHPUnit\\Framework\\MockObject\\Generator\\HookedProperty' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/HookedProperty.php', 'PHPUnit\\Framework\\MockObject\\Generator\\HookedProperty' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/HookedProperty.php',
'PHPUnit\\Framework\\MockObject\\Generator\\HookedPropertyGenerator' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/HookedPropertyGenerator.php', 'PHPUnit\\Framework\\MockObject\\Generator\\HookedPropertyGenerator' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/HookedPropertyGenerator.php',
'PHPUnit\\Framework\\MockObject\\Generator\\InvalidMethodNameException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/InvalidMethodNameException.php', 'PHPUnit\\Framework\\MockObject\\Generator\\InvalidMethodNameException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/InvalidMethodNameException.php',
'PHPUnit\\Framework\\MockObject\\Generator\\MethodNamedMethodException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/MethodNamedMethodException.php', 'PHPUnit\\Framework\\MockObject\\Generator\\MockClass' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/MockClass.php',
'PHPUnit\\Framework\\MockObject\\Generator\\MockMethod' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/MockMethod.php',
'PHPUnit\\Framework\\MockObject\\Generator\\MockMethodSet' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/MockMethodSet.php',
'PHPUnit\\Framework\\MockObject\\Generator\\MockTrait' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/MockTrait.php',
'PHPUnit\\Framework\\MockObject\\Generator\\MockType' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/MockType.php',
'PHPUnit\\Framework\\MockObject\\Generator\\NameAlreadyInUseException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/NameAlreadyInUseException.php', 'PHPUnit\\Framework\\MockObject\\Generator\\NameAlreadyInUseException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/NameAlreadyInUseException.php',
'PHPUnit\\Framework\\MockObject\\Generator\\OriginalConstructorInvocationRequiredException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/OriginalConstructorInvocationRequiredException.php',
'PHPUnit\\Framework\\MockObject\\Generator\\ReflectionException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/ReflectionException.php', 'PHPUnit\\Framework\\MockObject\\Generator\\ReflectionException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/ReflectionException.php',
'PHPUnit\\Framework\\MockObject\\Generator\\RuntimeException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/RuntimeException.php', 'PHPUnit\\Framework\\MockObject\\Generator\\RuntimeException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/RuntimeException.php',
'PHPUnit\\Framework\\MockObject\\Generator\\SoapExtensionNotAvailableException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/SoapExtensionNotAvailableException.php',
'PHPUnit\\Framework\\MockObject\\Generator\\TemplateLoader' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/TemplateLoader.php', 'PHPUnit\\Framework\\MockObject\\Generator\\TemplateLoader' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/TemplateLoader.php',
'PHPUnit\\Framework\\MockObject\\Generator\\UnknownClassException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/UnknownClassException.php',
'PHPUnit\\Framework\\MockObject\\Generator\\UnknownTraitException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/UnknownTraitException.php',
'PHPUnit\\Framework\\MockObject\\Generator\\UnknownTypeException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/UnknownTypeException.php', 'PHPUnit\\Framework\\MockObject\\Generator\\UnknownTypeException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/UnknownTypeException.php',
'PHPUnit\\Framework\\MockObject\\IncompatibleReturnValueException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/IncompatibleReturnValueException.php', 'PHPUnit\\Framework\\MockObject\\IncompatibleReturnValueException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/IncompatibleReturnValueException.php',
'PHPUnit\\Framework\\MockObject\\Invocation' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Invocation.php', 'PHPUnit\\Framework\\MockObject\\Invocation' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Invocation.php',
@ -439,6 +425,7 @@ return array(
'PHPUnit\\Framework\\MockObject\\MockObject' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Interface/MockObject.php', 'PHPUnit\\Framework\\MockObject\\MockObject' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Interface/MockObject.php',
'PHPUnit\\Framework\\MockObject\\MockObjectApi' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Api/MockObjectApi.php', 'PHPUnit\\Framework\\MockObject\\MockObjectApi' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Api/MockObjectApi.php',
'PHPUnit\\Framework\\MockObject\\MockObjectInternal' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Interface/MockObjectInternal.php', 'PHPUnit\\Framework\\MockObject\\MockObjectInternal' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Interface/MockObjectInternal.php',
'PHPUnit\\Framework\\MockObject\\MutableStubApi' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Api/MutableStubApi.php',
'PHPUnit\\Framework\\MockObject\\NeverReturningMethodException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/NeverReturningMethodException.php', 'PHPUnit\\Framework\\MockObject\\NeverReturningMethodException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/NeverReturningMethodException.php',
'PHPUnit\\Framework\\MockObject\\NoMoreReturnValuesConfiguredException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/NoMoreReturnValuesConfiguredException.php', 'PHPUnit\\Framework\\MockObject\\NoMoreReturnValuesConfiguredException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/NoMoreReturnValuesConfiguredException.php',
'PHPUnit\\Framework\\MockObject\\ProxiedCloneMethod' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Api/ProxiedCloneMethod.php', 'PHPUnit\\Framework\\MockObject\\ProxiedCloneMethod' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Api/ProxiedCloneMethod.php',
@ -506,7 +493,7 @@ return array(
'PHPUnit\\Framework\\TestSuite' => $vendorDir . '/phpunit/phpunit/src/Framework/TestSuite.php', 'PHPUnit\\Framework\\TestSuite' => $vendorDir . '/phpunit/phpunit/src/Framework/TestSuite.php',
'PHPUnit\\Framework\\TestSuiteIterator' => $vendorDir . '/phpunit/phpunit/src/Framework/TestSuiteIterator.php', 'PHPUnit\\Framework\\TestSuiteIterator' => $vendorDir . '/phpunit/phpunit/src/Framework/TestSuiteIterator.php',
'PHPUnit\\Framework\\UnknownClassOrInterfaceException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/UnknownClassOrInterfaceException.php', 'PHPUnit\\Framework\\UnknownClassOrInterfaceException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/UnknownClassOrInterfaceException.php',
'PHPUnit\\Framework\\UnknownNativeTypeException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/UnknownNativeTypeException.php', 'PHPUnit\\Framework\\UnknownTypeException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/UnknownTypeException.php',
'PHPUnit\\Logging\\EventLogger' => $vendorDir . '/phpunit/phpunit/src/Logging/EventLogger.php', 'PHPUnit\\Logging\\EventLogger' => $vendorDir . '/phpunit/phpunit/src/Logging/EventLogger.php',
'PHPUnit\\Logging\\JUnit\\JunitXmlLogger' => $vendorDir . '/phpunit/phpunit/src/Logging/JUnit/JunitXmlLogger.php', 'PHPUnit\\Logging\\JUnit\\JunitXmlLogger' => $vendorDir . '/phpunit/phpunit/src/Logging/JUnit/JunitXmlLogger.php',
'PHPUnit\\Logging\\JUnit\\Subscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/JUnit/Subscriber/Subscriber.php', 'PHPUnit\\Logging\\JUnit\\Subscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/JUnit/Subscriber/Subscriber.php',
@ -563,6 +550,9 @@ return array(
'PHPUnit\\Logging\\TestDox\\TestTriggeredWarningSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredWarningSubscriber.php', 'PHPUnit\\Logging\\TestDox\\TestTriggeredWarningSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredWarningSubscriber.php',
'PHPUnit\\Metadata\\After' => $vendorDir . '/phpunit/phpunit/src/Metadata/After.php', 'PHPUnit\\Metadata\\After' => $vendorDir . '/phpunit/phpunit/src/Metadata/After.php',
'PHPUnit\\Metadata\\AfterClass' => $vendorDir . '/phpunit/phpunit/src/Metadata/AfterClass.php', 'PHPUnit\\Metadata\\AfterClass' => $vendorDir . '/phpunit/phpunit/src/Metadata/AfterClass.php',
'PHPUnit\\Metadata\\Annotation\\Parser\\DocBlock' => $vendorDir . '/phpunit/phpunit/src/Metadata/Parser/Annotation/DocBlock.php',
'PHPUnit\\Metadata\\Annotation\\Parser\\Registry' => $vendorDir . '/phpunit/phpunit/src/Metadata/Parser/Annotation/Registry.php',
'PHPUnit\\Metadata\\AnnotationsAreNotSupportedForInternalClassesException' => $vendorDir . '/phpunit/phpunit/src/Metadata/Exception/AnnotationsAreNotSupportedForInternalClassesException.php',
'PHPUnit\\Metadata\\Api\\CodeCoverage' => $vendorDir . '/phpunit/phpunit/src/Metadata/Api/CodeCoverage.php', 'PHPUnit\\Metadata\\Api\\CodeCoverage' => $vendorDir . '/phpunit/phpunit/src/Metadata/Api/CodeCoverage.php',
'PHPUnit\\Metadata\\Api\\DataProvider' => $vendorDir . '/phpunit/phpunit/src/Metadata/Api/DataProvider.php', 'PHPUnit\\Metadata\\Api\\DataProvider' => $vendorDir . '/phpunit/phpunit/src/Metadata/Api/DataProvider.php',
'PHPUnit\\Metadata\\Api\\Dependencies' => $vendorDir . '/phpunit/phpunit/src/Metadata/Api/Dependencies.php', 'PHPUnit\\Metadata\\Api\\Dependencies' => $vendorDir . '/phpunit/phpunit/src/Metadata/Api/Dependencies.php',
@ -573,12 +563,11 @@ return array(
'PHPUnit\\Metadata\\BackupStaticProperties' => $vendorDir . '/phpunit/phpunit/src/Metadata/BackupStaticProperties.php', 'PHPUnit\\Metadata\\BackupStaticProperties' => $vendorDir . '/phpunit/phpunit/src/Metadata/BackupStaticProperties.php',
'PHPUnit\\Metadata\\Before' => $vendorDir . '/phpunit/phpunit/src/Metadata/Before.php', 'PHPUnit\\Metadata\\Before' => $vendorDir . '/phpunit/phpunit/src/Metadata/Before.php',
'PHPUnit\\Metadata\\BeforeClass' => $vendorDir . '/phpunit/phpunit/src/Metadata/BeforeClass.php', 'PHPUnit\\Metadata\\BeforeClass' => $vendorDir . '/phpunit/phpunit/src/Metadata/BeforeClass.php',
'PHPUnit\\Metadata\\Covers' => $vendorDir . '/phpunit/phpunit/src/Metadata/Covers.php',
'PHPUnit\\Metadata\\CoversClass' => $vendorDir . '/phpunit/phpunit/src/Metadata/CoversClass.php', 'PHPUnit\\Metadata\\CoversClass' => $vendorDir . '/phpunit/phpunit/src/Metadata/CoversClass.php',
'PHPUnit\\Metadata\\CoversClassesThatExtendClass' => $vendorDir . '/phpunit/phpunit/src/Metadata/CoversClassesThatExtendClass.php', 'PHPUnit\\Metadata\\CoversDefaultClass' => $vendorDir . '/phpunit/phpunit/src/Metadata/CoversDefaultClass.php',
'PHPUnit\\Metadata\\CoversClassesThatImplementInterface' => $vendorDir . '/phpunit/phpunit/src/Metadata/CoversClassesThatImplementInterface.php',
'PHPUnit\\Metadata\\CoversFunction' => $vendorDir . '/phpunit/phpunit/src/Metadata/CoversFunction.php', 'PHPUnit\\Metadata\\CoversFunction' => $vendorDir . '/phpunit/phpunit/src/Metadata/CoversFunction.php',
'PHPUnit\\Metadata\\CoversMethod' => $vendorDir . '/phpunit/phpunit/src/Metadata/CoversMethod.php', 'PHPUnit\\Metadata\\CoversMethod' => $vendorDir . '/phpunit/phpunit/src/Metadata/CoversMethod.php',
'PHPUnit\\Metadata\\CoversNamespace' => $vendorDir . '/phpunit/phpunit/src/Metadata/CoversNamespace.php',
'PHPUnit\\Metadata\\CoversNothing' => $vendorDir . '/phpunit/phpunit/src/Metadata/CoversNothing.php', 'PHPUnit\\Metadata\\CoversNothing' => $vendorDir . '/phpunit/phpunit/src/Metadata/CoversNothing.php',
'PHPUnit\\Metadata\\CoversTrait' => $vendorDir . '/phpunit/phpunit/src/Metadata/CoversTrait.php', 'PHPUnit\\Metadata\\CoversTrait' => $vendorDir . '/phpunit/phpunit/src/Metadata/CoversTrait.php',
'PHPUnit\\Metadata\\DataProvider' => $vendorDir . '/phpunit/phpunit/src/Metadata/DataProvider.php', 'PHPUnit\\Metadata\\DataProvider' => $vendorDir . '/phpunit/phpunit/src/Metadata/DataProvider.php',
@ -597,14 +586,16 @@ return array(
'PHPUnit\\Metadata\\MetadataCollection' => $vendorDir . '/phpunit/phpunit/src/Metadata/MetadataCollection.php', 'PHPUnit\\Metadata\\MetadataCollection' => $vendorDir . '/phpunit/phpunit/src/Metadata/MetadataCollection.php',
'PHPUnit\\Metadata\\MetadataCollectionIterator' => $vendorDir . '/phpunit/phpunit/src/Metadata/MetadataCollectionIterator.php', 'PHPUnit\\Metadata\\MetadataCollectionIterator' => $vendorDir . '/phpunit/phpunit/src/Metadata/MetadataCollectionIterator.php',
'PHPUnit\\Metadata\\NoVersionRequirementException' => $vendorDir . '/phpunit/phpunit/src/Metadata/Exception/NoVersionRequirementException.php', 'PHPUnit\\Metadata\\NoVersionRequirementException' => $vendorDir . '/phpunit/phpunit/src/Metadata/Exception/NoVersionRequirementException.php',
'PHPUnit\\Metadata\\Parser\\AnnotationParser' => $vendorDir . '/phpunit/phpunit/src/Metadata/Parser/AnnotationParser.php',
'PHPUnit\\Metadata\\Parser\\AttributeParser' => $vendorDir . '/phpunit/phpunit/src/Metadata/Parser/AttributeParser.php', 'PHPUnit\\Metadata\\Parser\\AttributeParser' => $vendorDir . '/phpunit/phpunit/src/Metadata/Parser/AttributeParser.php',
'PHPUnit\\Metadata\\Parser\\CachingParser' => $vendorDir . '/phpunit/phpunit/src/Metadata/Parser/CachingParser.php', 'PHPUnit\\Metadata\\Parser\\CachingParser' => $vendorDir . '/phpunit/phpunit/src/Metadata/Parser/CachingParser.php',
'PHPUnit\\Metadata\\Parser\\Parser' => $vendorDir . '/phpunit/phpunit/src/Metadata/Parser/Parser.php', 'PHPUnit\\Metadata\\Parser\\Parser' => $vendorDir . '/phpunit/phpunit/src/Metadata/Parser/Parser.php',
'PHPUnit\\Metadata\\Parser\\ParserChain' => $vendorDir . '/phpunit/phpunit/src/Metadata/Parser/ParserChain.php',
'PHPUnit\\Metadata\\Parser\\Registry' => $vendorDir . '/phpunit/phpunit/src/Metadata/Parser/Registry.php', 'PHPUnit\\Metadata\\Parser\\Registry' => $vendorDir . '/phpunit/phpunit/src/Metadata/Parser/Registry.php',
'PHPUnit\\Metadata\\PostCondition' => $vendorDir . '/phpunit/phpunit/src/Metadata/PostCondition.php', 'PHPUnit\\Metadata\\PostCondition' => $vendorDir . '/phpunit/phpunit/src/Metadata/PostCondition.php',
'PHPUnit\\Metadata\\PreCondition' => $vendorDir . '/phpunit/phpunit/src/Metadata/PreCondition.php', 'PHPUnit\\Metadata\\PreCondition' => $vendorDir . '/phpunit/phpunit/src/Metadata/PreCondition.php',
'PHPUnit\\Metadata\\PreserveGlobalState' => $vendorDir . '/phpunit/phpunit/src/Metadata/PreserveGlobalState.php', 'PHPUnit\\Metadata\\PreserveGlobalState' => $vendorDir . '/phpunit/phpunit/src/Metadata/PreserveGlobalState.php',
'PHPUnit\\Metadata\\RequiresEnvironmentVariable' => $vendorDir . '/phpunit/phpunit/src/Metadata/RequiresEnvironmentVariable.php', 'PHPUnit\\Metadata\\ReflectionException' => $vendorDir . '/phpunit/phpunit/src/Metadata/Exception/ReflectionException.php',
'PHPUnit\\Metadata\\RequiresFunction' => $vendorDir . '/phpunit/phpunit/src/Metadata/RequiresFunction.php', 'PHPUnit\\Metadata\\RequiresFunction' => $vendorDir . '/phpunit/phpunit/src/Metadata/RequiresFunction.php',
'PHPUnit\\Metadata\\RequiresMethod' => $vendorDir . '/phpunit/phpunit/src/Metadata/RequiresMethod.php', 'PHPUnit\\Metadata\\RequiresMethod' => $vendorDir . '/phpunit/phpunit/src/Metadata/RequiresMethod.php',
'PHPUnit\\Metadata\\RequiresOperatingSystem' => $vendorDir . '/phpunit/phpunit/src/Metadata/RequiresOperatingSystem.php', 'PHPUnit\\Metadata\\RequiresOperatingSystem' => $vendorDir . '/phpunit/phpunit/src/Metadata/RequiresOperatingSystem.php',
@ -620,12 +611,11 @@ return array(
'PHPUnit\\Metadata\\Test' => $vendorDir . '/phpunit/phpunit/src/Metadata/Test.php', 'PHPUnit\\Metadata\\Test' => $vendorDir . '/phpunit/phpunit/src/Metadata/Test.php',
'PHPUnit\\Metadata\\TestDox' => $vendorDir . '/phpunit/phpunit/src/Metadata/TestDox.php', 'PHPUnit\\Metadata\\TestDox' => $vendorDir . '/phpunit/phpunit/src/Metadata/TestDox.php',
'PHPUnit\\Metadata\\TestWith' => $vendorDir . '/phpunit/phpunit/src/Metadata/TestWith.php', 'PHPUnit\\Metadata\\TestWith' => $vendorDir . '/phpunit/phpunit/src/Metadata/TestWith.php',
'PHPUnit\\Metadata\\Uses' => $vendorDir . '/phpunit/phpunit/src/Metadata/Uses.php',
'PHPUnit\\Metadata\\UsesClass' => $vendorDir . '/phpunit/phpunit/src/Metadata/UsesClass.php', 'PHPUnit\\Metadata\\UsesClass' => $vendorDir . '/phpunit/phpunit/src/Metadata/UsesClass.php',
'PHPUnit\\Metadata\\UsesClassesThatExtendClass' => $vendorDir . '/phpunit/phpunit/src/Metadata/UsesClassesThatExtendClass.php', 'PHPUnit\\Metadata\\UsesDefaultClass' => $vendorDir . '/phpunit/phpunit/src/Metadata/UsesDefaultClass.php',
'PHPUnit\\Metadata\\UsesClassesThatImplementInterface' => $vendorDir . '/phpunit/phpunit/src/Metadata/UsesClassesThatImplementInterface.php',
'PHPUnit\\Metadata\\UsesFunction' => $vendorDir . '/phpunit/phpunit/src/Metadata/UsesFunction.php', 'PHPUnit\\Metadata\\UsesFunction' => $vendorDir . '/phpunit/phpunit/src/Metadata/UsesFunction.php',
'PHPUnit\\Metadata\\UsesMethod' => $vendorDir . '/phpunit/phpunit/src/Metadata/UsesMethod.php', 'PHPUnit\\Metadata\\UsesMethod' => $vendorDir . '/phpunit/phpunit/src/Metadata/UsesMethod.php',
'PHPUnit\\Metadata\\UsesNamespace' => $vendorDir . '/phpunit/phpunit/src/Metadata/UsesNamespace.php',
'PHPUnit\\Metadata\\UsesTrait' => $vendorDir . '/phpunit/phpunit/src/Metadata/UsesTrait.php', 'PHPUnit\\Metadata\\UsesTrait' => $vendorDir . '/phpunit/phpunit/src/Metadata/UsesTrait.php',
'PHPUnit\\Metadata\\Version\\ComparisonRequirement' => $vendorDir . '/phpunit/phpunit/src/Metadata/Version/ComparisonRequirement.php', 'PHPUnit\\Metadata\\Version\\ComparisonRequirement' => $vendorDir . '/phpunit/phpunit/src/Metadata/Version/ComparisonRequirement.php',
'PHPUnit\\Metadata\\Version\\ConstraintRequirement' => $vendorDir . '/phpunit/phpunit/src/Metadata/Version/ConstraintRequirement.php', 'PHPUnit\\Metadata\\Version\\ConstraintRequirement' => $vendorDir . '/phpunit/phpunit/src/Metadata/Version/ConstraintRequirement.php',
@ -923,6 +913,7 @@ return array(
'PHPUnit\\TextUI\\XmlConfiguration\\UpdateSchemaLocation' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/UpdateSchemaLocation.php', 'PHPUnit\\TextUI\\XmlConfiguration\\UpdateSchemaLocation' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/UpdateSchemaLocation.php',
'PHPUnit\\TextUI\\XmlConfiguration\\ValidationResult' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Validator/ValidationResult.php', 'PHPUnit\\TextUI\\XmlConfiguration\\ValidationResult' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Validator/ValidationResult.php',
'PHPUnit\\TextUI\\XmlConfiguration\\Validator' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Validator/Validator.php', 'PHPUnit\\TextUI\\XmlConfiguration\\Validator' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Validator/Validator.php',
'PHPUnit\\Util\\Cloner' => $vendorDir . '/phpunit/phpunit/src/Util/Cloner.php',
'PHPUnit\\Util\\Color' => $vendorDir . '/phpunit/phpunit/src/Util/Color.php', 'PHPUnit\\Util\\Color' => $vendorDir . '/phpunit/phpunit/src/Util/Color.php',
'PHPUnit\\Util\\Exception' => $vendorDir . '/phpunit/phpunit/src/Util/Exception/Exception.php', 'PHPUnit\\Util\\Exception' => $vendorDir . '/phpunit/phpunit/src/Util/Exception/Exception.php',
'PHPUnit\\Util\\ExcludeList' => $vendorDir . '/phpunit/phpunit/src/Util/ExcludeList.php', 'PHPUnit\\Util\\ExcludeList' => $vendorDir . '/phpunit/phpunit/src/Util/ExcludeList.php',
@ -1021,270 +1012,6 @@ return array(
'PharIo\\Version\\VersionConstraintParser' => $vendorDir . '/phar-io/version/src/VersionConstraintParser.php', 'PharIo\\Version\\VersionConstraintParser' => $vendorDir . '/phar-io/version/src/VersionConstraintParser.php',
'PharIo\\Version\\VersionConstraintValue' => $vendorDir . '/phar-io/version/src/VersionConstraintValue.php', 'PharIo\\Version\\VersionConstraintValue' => $vendorDir . '/phar-io/version/src/VersionConstraintValue.php',
'PharIo\\Version\\VersionNumber' => $vendorDir . '/phar-io/version/src/VersionNumber.php', 'PharIo\\Version\\VersionNumber' => $vendorDir . '/phar-io/version/src/VersionNumber.php',
'PhpParser\\Builder' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder.php',
'PhpParser\\BuilderFactory' => $vendorDir . '/nikic/php-parser/lib/PhpParser/BuilderFactory.php',
'PhpParser\\BuilderHelpers' => $vendorDir . '/nikic/php-parser/lib/PhpParser/BuilderHelpers.php',
'PhpParser\\Builder\\ClassConst' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/ClassConst.php',
'PhpParser\\Builder\\Class_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/Class_.php',
'PhpParser\\Builder\\Declaration' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/Declaration.php',
'PhpParser\\Builder\\EnumCase' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/EnumCase.php',
'PhpParser\\Builder\\Enum_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/Enum_.php',
'PhpParser\\Builder\\FunctionLike' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/FunctionLike.php',
'PhpParser\\Builder\\Function_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/Function_.php',
'PhpParser\\Builder\\Interface_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/Interface_.php',
'PhpParser\\Builder\\Method' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/Method.php',
'PhpParser\\Builder\\Namespace_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/Namespace_.php',
'PhpParser\\Builder\\Param' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/Param.php',
'PhpParser\\Builder\\Property' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/Property.php',
'PhpParser\\Builder\\TraitUse' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/TraitUse.php',
'PhpParser\\Builder\\TraitUseAdaptation' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/TraitUseAdaptation.php',
'PhpParser\\Builder\\Trait_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/Trait_.php',
'PhpParser\\Builder\\Use_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/Use_.php',
'PhpParser\\Comment' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Comment.php',
'PhpParser\\Comment\\Doc' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Comment/Doc.php',
'PhpParser\\ConstExprEvaluationException' => $vendorDir . '/nikic/php-parser/lib/PhpParser/ConstExprEvaluationException.php',
'PhpParser\\ConstExprEvaluator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/ConstExprEvaluator.php',
'PhpParser\\Error' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Error.php',
'PhpParser\\ErrorHandler' => $vendorDir . '/nikic/php-parser/lib/PhpParser/ErrorHandler.php',
'PhpParser\\ErrorHandler\\Collecting' => $vendorDir . '/nikic/php-parser/lib/PhpParser/ErrorHandler/Collecting.php',
'PhpParser\\ErrorHandler\\Throwing' => $vendorDir . '/nikic/php-parser/lib/PhpParser/ErrorHandler/Throwing.php',
'PhpParser\\Internal\\DiffElem' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Internal/DiffElem.php',
'PhpParser\\Internal\\Differ' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Internal/Differ.php',
'PhpParser\\Internal\\PrintableNewAnonClassNode' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Internal/PrintableNewAnonClassNode.php',
'PhpParser\\Internal\\TokenPolyfill' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Internal/TokenPolyfill.php',
'PhpParser\\Internal\\TokenStream' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Internal/TokenStream.php',
'PhpParser\\JsonDecoder' => $vendorDir . '/nikic/php-parser/lib/PhpParser/JsonDecoder.php',
'PhpParser\\Lexer' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer.php',
'PhpParser\\Lexer\\Emulative' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/Emulative.php',
'PhpParser\\Lexer\\TokenEmulator\\AsymmetricVisibilityTokenEmulator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/AsymmetricVisibilityTokenEmulator.php',
'PhpParser\\Lexer\\TokenEmulator\\AttributeEmulator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/AttributeEmulator.php',
'PhpParser\\Lexer\\TokenEmulator\\EnumTokenEmulator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/EnumTokenEmulator.php',
'PhpParser\\Lexer\\TokenEmulator\\ExplicitOctalEmulator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ExplicitOctalEmulator.php',
'PhpParser\\Lexer\\TokenEmulator\\KeywordEmulator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/KeywordEmulator.php',
'PhpParser\\Lexer\\TokenEmulator\\MatchTokenEmulator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/MatchTokenEmulator.php',
'PhpParser\\Lexer\\TokenEmulator\\NullsafeTokenEmulator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/NullsafeTokenEmulator.php',
'PhpParser\\Lexer\\TokenEmulator\\PropertyTokenEmulator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/PropertyTokenEmulator.php',
'PhpParser\\Lexer\\TokenEmulator\\ReadonlyFunctionTokenEmulator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReadonlyFunctionTokenEmulator.php',
'PhpParser\\Lexer\\TokenEmulator\\ReadonlyTokenEmulator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReadonlyTokenEmulator.php',
'PhpParser\\Lexer\\TokenEmulator\\ReverseEmulator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReverseEmulator.php',
'PhpParser\\Lexer\\TokenEmulator\\TokenEmulator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/TokenEmulator.php',
'PhpParser\\Modifiers' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Modifiers.php',
'PhpParser\\NameContext' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NameContext.php',
'PhpParser\\Node' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node.php',
'PhpParser\\NodeAbstract' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NodeAbstract.php',
'PhpParser\\NodeDumper' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NodeDumper.php',
'PhpParser\\NodeFinder' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NodeFinder.php',
'PhpParser\\NodeTraverser' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NodeTraverser.php',
'PhpParser\\NodeTraverserInterface' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NodeTraverserInterface.php',
'PhpParser\\NodeVisitor' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NodeVisitor.php',
'PhpParser\\NodeVisitorAbstract' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NodeVisitorAbstract.php',
'PhpParser\\NodeVisitor\\CloningVisitor' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NodeVisitor/CloningVisitor.php',
'PhpParser\\NodeVisitor\\CommentAnnotatingVisitor' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NodeVisitor/CommentAnnotatingVisitor.php',
'PhpParser\\NodeVisitor\\FindingVisitor' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NodeVisitor/FindingVisitor.php',
'PhpParser\\NodeVisitor\\FirstFindingVisitor' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NodeVisitor/FirstFindingVisitor.php',
'PhpParser\\NodeVisitor\\NameResolver' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NodeVisitor/NameResolver.php',
'PhpParser\\NodeVisitor\\NodeConnectingVisitor' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NodeVisitor/NodeConnectingVisitor.php',
'PhpParser\\NodeVisitor\\ParentConnectingVisitor' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NodeVisitor/ParentConnectingVisitor.php',
'PhpParser\\Node\\Arg' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Arg.php',
'PhpParser\\Node\\ArrayItem' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/ArrayItem.php',
'PhpParser\\Node\\Attribute' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Attribute.php',
'PhpParser\\Node\\AttributeGroup' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/AttributeGroup.php',
'PhpParser\\Node\\ClosureUse' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/ClosureUse.php',
'PhpParser\\Node\\ComplexType' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/ComplexType.php',
'PhpParser\\Node\\Const_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Const_.php',
'PhpParser\\Node\\DeclareItem' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/DeclareItem.php',
'PhpParser\\Node\\Expr' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr.php',
'PhpParser\\Node\\Expr\\ArrayDimFetch' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayDimFetch.php',
'PhpParser\\Node\\Expr\\ArrayItem' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayItem.php',
'PhpParser\\Node\\Expr\\Array_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Array_.php',
'PhpParser\\Node\\Expr\\ArrowFunction' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/ArrowFunction.php',
'PhpParser\\Node\\Expr\\Assign' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Assign.php',
'PhpParser\\Node\\Expr\\AssignOp' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp.php',
'PhpParser\\Node\\Expr\\AssignOp\\BitwiseAnd' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseAnd.php',
'PhpParser\\Node\\Expr\\AssignOp\\BitwiseOr' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseOr.php',
'PhpParser\\Node\\Expr\\AssignOp\\BitwiseXor' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseXor.php',
'PhpParser\\Node\\Expr\\AssignOp\\Coalesce' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Coalesce.php',
'PhpParser\\Node\\Expr\\AssignOp\\Concat' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Concat.php',
'PhpParser\\Node\\Expr\\AssignOp\\Div' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Div.php',
'PhpParser\\Node\\Expr\\AssignOp\\Minus' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Minus.php',
'PhpParser\\Node\\Expr\\AssignOp\\Mod' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Mod.php',
'PhpParser\\Node\\Expr\\AssignOp\\Mul' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Mul.php',
'PhpParser\\Node\\Expr\\AssignOp\\Plus' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Plus.php',
'PhpParser\\Node\\Expr\\AssignOp\\Pow' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Pow.php',
'PhpParser\\Node\\Expr\\AssignOp\\ShiftLeft' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/ShiftLeft.php',
'PhpParser\\Node\\Expr\\AssignOp\\ShiftRight' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/ShiftRight.php',
'PhpParser\\Node\\Expr\\AssignRef' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignRef.php',
'PhpParser\\Node\\Expr\\BinaryOp' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp.php',
'PhpParser\\Node\\Expr\\BinaryOp\\BitwiseAnd' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseAnd.php',
'PhpParser\\Node\\Expr\\BinaryOp\\BitwiseOr' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseOr.php',
'PhpParser\\Node\\Expr\\BinaryOp\\BitwiseXor' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseXor.php',
'PhpParser\\Node\\Expr\\BinaryOp\\BooleanAnd' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BooleanAnd.php',
'PhpParser\\Node\\Expr\\BinaryOp\\BooleanOr' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BooleanOr.php',
'PhpParser\\Node\\Expr\\BinaryOp\\Coalesce' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Coalesce.php',
'PhpParser\\Node\\Expr\\BinaryOp\\Concat' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Concat.php',
'PhpParser\\Node\\Expr\\BinaryOp\\Div' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Div.php',
'PhpParser\\Node\\Expr\\BinaryOp\\Equal' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Equal.php',
'PhpParser\\Node\\Expr\\BinaryOp\\Greater' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Greater.php',
'PhpParser\\Node\\Expr\\BinaryOp\\GreaterOrEqual' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/GreaterOrEqual.php',
'PhpParser\\Node\\Expr\\BinaryOp\\Identical' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Identical.php',
'PhpParser\\Node\\Expr\\BinaryOp\\LogicalAnd' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalAnd.php',
'PhpParser\\Node\\Expr\\BinaryOp\\LogicalOr' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalOr.php',
'PhpParser\\Node\\Expr\\BinaryOp\\LogicalXor' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalXor.php',
'PhpParser\\Node\\Expr\\BinaryOp\\Minus' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Minus.php',
'PhpParser\\Node\\Expr\\BinaryOp\\Mod' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Mod.php',
'PhpParser\\Node\\Expr\\BinaryOp\\Mul' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Mul.php',
'PhpParser\\Node\\Expr\\BinaryOp\\NotEqual' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/NotEqual.php',
'PhpParser\\Node\\Expr\\BinaryOp\\NotIdentical' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/NotIdentical.php',
'PhpParser\\Node\\Expr\\BinaryOp\\Plus' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Plus.php',
'PhpParser\\Node\\Expr\\BinaryOp\\Pow' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Pow.php',
'PhpParser\\Node\\Expr\\BinaryOp\\ShiftLeft' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/ShiftLeft.php',
'PhpParser\\Node\\Expr\\BinaryOp\\ShiftRight' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/ShiftRight.php',
'PhpParser\\Node\\Expr\\BinaryOp\\Smaller' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Smaller.php',
'PhpParser\\Node\\Expr\\BinaryOp\\SmallerOrEqual' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/SmallerOrEqual.php',
'PhpParser\\Node\\Expr\\BinaryOp\\Spaceship' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Spaceship.php',
'PhpParser\\Node\\Expr\\BitwiseNot' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BitwiseNot.php',
'PhpParser\\Node\\Expr\\BooleanNot' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BooleanNot.php',
'PhpParser\\Node\\Expr\\CallLike' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/CallLike.php',
'PhpParser\\Node\\Expr\\Cast' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast.php',
'PhpParser\\Node\\Expr\\Cast\\Array_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Array_.php',
'PhpParser\\Node\\Expr\\Cast\\Bool_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Bool_.php',
'PhpParser\\Node\\Expr\\Cast\\Double' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Double.php',
'PhpParser\\Node\\Expr\\Cast\\Int_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Int_.php',
'PhpParser\\Node\\Expr\\Cast\\Object_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Object_.php',
'PhpParser\\Node\\Expr\\Cast\\String_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/String_.php',
'PhpParser\\Node\\Expr\\Cast\\Unset_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Unset_.php',
'PhpParser\\Node\\Expr\\ClassConstFetch' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/ClassConstFetch.php',
'PhpParser\\Node\\Expr\\Clone_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Clone_.php',
'PhpParser\\Node\\Expr\\Closure' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Closure.php',
'PhpParser\\Node\\Expr\\ClosureUse' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/ClosureUse.php',
'PhpParser\\Node\\Expr\\ConstFetch' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/ConstFetch.php',
'PhpParser\\Node\\Expr\\Empty_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Empty_.php',
'PhpParser\\Node\\Expr\\Error' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Error.php',
'PhpParser\\Node\\Expr\\ErrorSuppress' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/ErrorSuppress.php',
'PhpParser\\Node\\Expr\\Eval_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Eval_.php',
'PhpParser\\Node\\Expr\\Exit_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Exit_.php',
'PhpParser\\Node\\Expr\\FuncCall' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/FuncCall.php',
'PhpParser\\Node\\Expr\\Include_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Include_.php',
'PhpParser\\Node\\Expr\\Instanceof_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Instanceof_.php',
'PhpParser\\Node\\Expr\\Isset_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Isset_.php',
'PhpParser\\Node\\Expr\\List_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/List_.php',
'PhpParser\\Node\\Expr\\Match_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Match_.php',
'PhpParser\\Node\\Expr\\MethodCall' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/MethodCall.php',
'PhpParser\\Node\\Expr\\New_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/New_.php',
'PhpParser\\Node\\Expr\\NullsafeMethodCall' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafeMethodCall.php',
'PhpParser\\Node\\Expr\\NullsafePropertyFetch' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafePropertyFetch.php',
'PhpParser\\Node\\Expr\\PostDec' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/PostDec.php',
'PhpParser\\Node\\Expr\\PostInc' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/PostInc.php',
'PhpParser\\Node\\Expr\\PreDec' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/PreDec.php',
'PhpParser\\Node\\Expr\\PreInc' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/PreInc.php',
'PhpParser\\Node\\Expr\\Print_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Print_.php',
'PhpParser\\Node\\Expr\\PropertyFetch' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/PropertyFetch.php',
'PhpParser\\Node\\Expr\\ShellExec' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/ShellExec.php',
'PhpParser\\Node\\Expr\\StaticCall' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/StaticCall.php',
'PhpParser\\Node\\Expr\\StaticPropertyFetch' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/StaticPropertyFetch.php',
'PhpParser\\Node\\Expr\\Ternary' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Ternary.php',
'PhpParser\\Node\\Expr\\Throw_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Throw_.php',
'PhpParser\\Node\\Expr\\UnaryMinus' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryMinus.php',
'PhpParser\\Node\\Expr\\UnaryPlus' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryPlus.php',
'PhpParser\\Node\\Expr\\Variable' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Variable.php',
'PhpParser\\Node\\Expr\\YieldFrom' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/YieldFrom.php',
'PhpParser\\Node\\Expr\\Yield_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Yield_.php',
'PhpParser\\Node\\FunctionLike' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/FunctionLike.php',
'PhpParser\\Node\\Identifier' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Identifier.php',
'PhpParser\\Node\\InterpolatedStringPart' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/InterpolatedStringPart.php',
'PhpParser\\Node\\IntersectionType' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/IntersectionType.php',
'PhpParser\\Node\\MatchArm' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/MatchArm.php',
'PhpParser\\Node\\Name' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Name.php',
'PhpParser\\Node\\Name\\FullyQualified' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Name/FullyQualified.php',
'PhpParser\\Node\\Name\\Relative' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Name/Relative.php',
'PhpParser\\Node\\NullableType' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/NullableType.php',
'PhpParser\\Node\\Param' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Param.php',
'PhpParser\\Node\\PropertyHook' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/PropertyHook.php',
'PhpParser\\Node\\PropertyItem' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/PropertyItem.php',
'PhpParser\\Node\\Scalar' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar.php',
'PhpParser\\Node\\Scalar\\DNumber' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/DNumber.php',
'PhpParser\\Node\\Scalar\\Encapsed' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/Encapsed.php',
'PhpParser\\Node\\Scalar\\EncapsedStringPart' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/EncapsedStringPart.php',
'PhpParser\\Node\\Scalar\\Float_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/Float_.php',
'PhpParser\\Node\\Scalar\\Int_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/Int_.php',
'PhpParser\\Node\\Scalar\\InterpolatedString' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/InterpolatedString.php',
'PhpParser\\Node\\Scalar\\LNumber' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/LNumber.php',
'PhpParser\\Node\\Scalar\\MagicConst' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst.php',
'PhpParser\\Node\\Scalar\\MagicConst\\Class_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Class_.php',
'PhpParser\\Node\\Scalar\\MagicConst\\Dir' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Dir.php',
'PhpParser\\Node\\Scalar\\MagicConst\\File' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/File.php',
'PhpParser\\Node\\Scalar\\MagicConst\\Function_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Function_.php',
'PhpParser\\Node\\Scalar\\MagicConst\\Line' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Line.php',
'PhpParser\\Node\\Scalar\\MagicConst\\Method' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Method.php',
'PhpParser\\Node\\Scalar\\MagicConst\\Namespace_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Namespace_.php',
'PhpParser\\Node\\Scalar\\MagicConst\\Property' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Property.php',
'PhpParser\\Node\\Scalar\\MagicConst\\Trait_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Trait_.php',
'PhpParser\\Node\\Scalar\\String_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/String_.php',
'PhpParser\\Node\\StaticVar' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/StaticVar.php',
'PhpParser\\Node\\Stmt' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt.php',
'PhpParser\\Node\\Stmt\\Block' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Block.php',
'PhpParser\\Node\\Stmt\\Break_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Break_.php',
'PhpParser\\Node\\Stmt\\Case_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Case_.php',
'PhpParser\\Node\\Stmt\\Catch_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Catch_.php',
'PhpParser\\Node\\Stmt\\ClassConst' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassConst.php',
'PhpParser\\Node\\Stmt\\ClassLike' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassLike.php',
'PhpParser\\Node\\Stmt\\ClassMethod' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassMethod.php',
'PhpParser\\Node\\Stmt\\Class_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Class_.php',
'PhpParser\\Node\\Stmt\\Const_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Const_.php',
'PhpParser\\Node\\Stmt\\Continue_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Continue_.php',
'PhpParser\\Node\\Stmt\\DeclareDeclare' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/DeclareDeclare.php',
'PhpParser\\Node\\Stmt\\Declare_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Declare_.php',
'PhpParser\\Node\\Stmt\\Do_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Do_.php',
'PhpParser\\Node\\Stmt\\Echo_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Echo_.php',
'PhpParser\\Node\\Stmt\\ElseIf_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/ElseIf_.php',
'PhpParser\\Node\\Stmt\\Else_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Else_.php',
'PhpParser\\Node\\Stmt\\EnumCase' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/EnumCase.php',
'PhpParser\\Node\\Stmt\\Enum_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Enum_.php',
'PhpParser\\Node\\Stmt\\Expression' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Expression.php',
'PhpParser\\Node\\Stmt\\Finally_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Finally_.php',
'PhpParser\\Node\\Stmt\\For_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/For_.php',
'PhpParser\\Node\\Stmt\\Foreach_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Foreach_.php',
'PhpParser\\Node\\Stmt\\Function_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Function_.php',
'PhpParser\\Node\\Stmt\\Global_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Global_.php',
'PhpParser\\Node\\Stmt\\Goto_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Goto_.php',
'PhpParser\\Node\\Stmt\\GroupUse' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/GroupUse.php',
'PhpParser\\Node\\Stmt\\HaltCompiler' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/HaltCompiler.php',
'PhpParser\\Node\\Stmt\\If_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/If_.php',
'PhpParser\\Node\\Stmt\\InlineHTML' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/InlineHTML.php',
'PhpParser\\Node\\Stmt\\Interface_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Interface_.php',
'PhpParser\\Node\\Stmt\\Label' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Label.php',
'PhpParser\\Node\\Stmt\\Namespace_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Namespace_.php',
'PhpParser\\Node\\Stmt\\Nop' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Nop.php',
'PhpParser\\Node\\Stmt\\Property' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Property.php',
'PhpParser\\Node\\Stmt\\PropertyProperty' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/PropertyProperty.php',
'PhpParser\\Node\\Stmt\\Return_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Return_.php',
'PhpParser\\Node\\Stmt\\StaticVar' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/StaticVar.php',
'PhpParser\\Node\\Stmt\\Static_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Static_.php',
'PhpParser\\Node\\Stmt\\Switch_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Switch_.php',
'PhpParser\\Node\\Stmt\\TraitUse' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUse.php',
'PhpParser\\Node\\Stmt\\TraitUseAdaptation' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation.php',
'PhpParser\\Node\\Stmt\\TraitUseAdaptation\\Alias' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation/Alias.php',
'PhpParser\\Node\\Stmt\\TraitUseAdaptation\\Precedence' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation/Precedence.php',
'PhpParser\\Node\\Stmt\\Trait_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Trait_.php',
'PhpParser\\Node\\Stmt\\TryCatch' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/TryCatch.php',
'PhpParser\\Node\\Stmt\\Unset_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Unset_.php',
'PhpParser\\Node\\Stmt\\UseUse' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/UseUse.php',
'PhpParser\\Node\\Stmt\\Use_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Use_.php',
'PhpParser\\Node\\Stmt\\While_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/While_.php',
'PhpParser\\Node\\UnionType' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/UnionType.php',
'PhpParser\\Node\\UseItem' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/UseItem.php',
'PhpParser\\Node\\VarLikeIdentifier' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/VarLikeIdentifier.php',
'PhpParser\\Node\\VariadicPlaceholder' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/VariadicPlaceholder.php',
'PhpParser\\Parser' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Parser.php',
'PhpParser\\ParserAbstract' => $vendorDir . '/nikic/php-parser/lib/PhpParser/ParserAbstract.php',
'PhpParser\\ParserFactory' => $vendorDir . '/nikic/php-parser/lib/PhpParser/ParserFactory.php',
'PhpParser\\Parser\\Php7' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Parser/Php7.php',
'PhpParser\\Parser\\Php8' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Parser/Php8.php',
'PhpParser\\PhpVersion' => $vendorDir . '/nikic/php-parser/lib/PhpParser/PhpVersion.php',
'PhpParser\\PrettyPrinter' => $vendorDir . '/nikic/php-parser/lib/PhpParser/PrettyPrinter.php',
'PhpParser\\PrettyPrinterAbstract' => $vendorDir . '/nikic/php-parser/lib/PhpParser/PrettyPrinterAbstract.php',
'PhpParser\\PrettyPrinter\\Standard' => $vendorDir . '/nikic/php-parser/lib/PhpParser/PrettyPrinter/Standard.php',
'PhpParser\\Token' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Token.php',
'SebastianBergmann\\CliParser\\AmbiguousOptionException' => $vendorDir . '/sebastian/cli-parser/src/exceptions/AmbiguousOptionException.php', 'SebastianBergmann\\CliParser\\AmbiguousOptionException' => $vendorDir . '/sebastian/cli-parser/src/exceptions/AmbiguousOptionException.php',
'SebastianBergmann\\CliParser\\Exception' => $vendorDir . '/sebastian/cli-parser/src/exceptions/Exception.php', 'SebastianBergmann\\CliParser\\Exception' => $vendorDir . '/sebastian/cli-parser/src/exceptions/Exception.php',
'SebastianBergmann\\CliParser\\OptionDoesNotAllowArgumentException' => $vendorDir . '/sebastian/cli-parser/src/exceptions/OptionDoesNotAllowArgumentException.php', 'SebastianBergmann\\CliParser\\OptionDoesNotAllowArgumentException' => $vendorDir . '/sebastian/cli-parser/src/exceptions/OptionDoesNotAllowArgumentException.php',
@ -1295,6 +1022,7 @@ return array(
'SebastianBergmann\\CodeCoverage\\CodeCoverage' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage.php', 'SebastianBergmann\\CodeCoverage\\CodeCoverage' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage.php',
'SebastianBergmann\\CodeCoverage\\Data\\ProcessedCodeCoverageData' => $vendorDir . '/phpunit/php-code-coverage/src/Data/ProcessedCodeCoverageData.php', 'SebastianBergmann\\CodeCoverage\\Data\\ProcessedCodeCoverageData' => $vendorDir . '/phpunit/php-code-coverage/src/Data/ProcessedCodeCoverageData.php',
'SebastianBergmann\\CodeCoverage\\Data\\RawCodeCoverageData' => $vendorDir . '/phpunit/php-code-coverage/src/Data/RawCodeCoverageData.php', 'SebastianBergmann\\CodeCoverage\\Data\\RawCodeCoverageData' => $vendorDir . '/phpunit/php-code-coverage/src/Data/RawCodeCoverageData.php',
'SebastianBergmann\\CodeCoverage\\DeadCodeDetectionNotSupportedException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/DeadCodeDetectionNotSupportedException.php',
'SebastianBergmann\\CodeCoverage\\Driver\\Driver' => $vendorDir . '/phpunit/php-code-coverage/src/Driver/Driver.php', 'SebastianBergmann\\CodeCoverage\\Driver\\Driver' => $vendorDir . '/phpunit/php-code-coverage/src/Driver/Driver.php',
'SebastianBergmann\\CodeCoverage\\Driver\\PathExistsButIsNotDirectoryException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/PathExistsButIsNotDirectoryException.php', 'SebastianBergmann\\CodeCoverage\\Driver\\PathExistsButIsNotDirectoryException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/PathExistsButIsNotDirectoryException.php',
'SebastianBergmann\\CodeCoverage\\Driver\\PcovDriver' => $vendorDir . '/phpunit/php-code-coverage/src/Driver/PcovDriver.php', 'SebastianBergmann\\CodeCoverage\\Driver\\PcovDriver' => $vendorDir . '/phpunit/php-code-coverage/src/Driver/PcovDriver.php',
@ -1304,7 +1032,6 @@ return array(
'SebastianBergmann\\CodeCoverage\\Driver\\XdebugDriver' => $vendorDir . '/phpunit/php-code-coverage/src/Driver/XdebugDriver.php', 'SebastianBergmann\\CodeCoverage\\Driver\\XdebugDriver' => $vendorDir . '/phpunit/php-code-coverage/src/Driver/XdebugDriver.php',
'SebastianBergmann\\CodeCoverage\\Driver\\XdebugNotAvailableException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/XdebugNotAvailableException.php', 'SebastianBergmann\\CodeCoverage\\Driver\\XdebugNotAvailableException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/XdebugNotAvailableException.php',
'SebastianBergmann\\CodeCoverage\\Driver\\XdebugNotEnabledException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/XdebugNotEnabledException.php', 'SebastianBergmann\\CodeCoverage\\Driver\\XdebugNotEnabledException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/XdebugNotEnabledException.php',
'SebastianBergmann\\CodeCoverage\\Driver\\XdebugVersionNotSupportedException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/XdebugVersionNotSupportedException.php',
'SebastianBergmann\\CodeCoverage\\Exception' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/Exception.php', 'SebastianBergmann\\CodeCoverage\\Exception' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/Exception.php',
'SebastianBergmann\\CodeCoverage\\FileCouldNotBeWrittenException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/FileCouldNotBeWrittenException.php', 'SebastianBergmann\\CodeCoverage\\FileCouldNotBeWrittenException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/FileCouldNotBeWrittenException.php',
'SebastianBergmann\\CodeCoverage\\Filter' => $vendorDir . '/phpunit/php-code-coverage/src/Filter.php', 'SebastianBergmann\\CodeCoverage\\Filter' => $vendorDir . '/phpunit/php-code-coverage/src/Filter.php',
@ -1349,36 +1076,12 @@ return array(
'SebastianBergmann\\CodeCoverage\\StaticAnalysisCacheNotConfiguredException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/StaticAnalysisCacheNotConfiguredException.php', 'SebastianBergmann\\CodeCoverage\\StaticAnalysisCacheNotConfiguredException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/StaticAnalysisCacheNotConfiguredException.php',
'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\CacheWarmer' => $vendorDir . '/phpunit/php-code-coverage/src/StaticAnalysis/CacheWarmer.php', 'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\CacheWarmer' => $vendorDir . '/phpunit/php-code-coverage/src/StaticAnalysis/CacheWarmer.php',
'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\CachingFileAnalyser' => $vendorDir . '/phpunit/php-code-coverage/src/StaticAnalysis/CachingFileAnalyser.php', 'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\CachingFileAnalyser' => $vendorDir . '/phpunit/php-code-coverage/src/StaticAnalysis/CachingFileAnalyser.php',
'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\Class_' => $vendorDir . '/phpunit/php-code-coverage/src/StaticAnalysis/Value/Class_.php',
'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\CodeUnitFindingVisitor' => $vendorDir . '/phpunit/php-code-coverage/src/StaticAnalysis/CodeUnitFindingVisitor.php', 'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\CodeUnitFindingVisitor' => $vendorDir . '/phpunit/php-code-coverage/src/StaticAnalysis/CodeUnitFindingVisitor.php',
'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\ExecutableLinesFindingVisitor' => $vendorDir . '/phpunit/php-code-coverage/src/StaticAnalysis/ExecutableLinesFindingVisitor.php', 'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\ExecutableLinesFindingVisitor' => $vendorDir . '/phpunit/php-code-coverage/src/StaticAnalysis/ExecutableLinesFindingVisitor.php',
'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\FileAnalyser' => $vendorDir . '/phpunit/php-code-coverage/src/StaticAnalysis/FileAnalyser.php', 'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\FileAnalyser' => $vendorDir . '/phpunit/php-code-coverage/src/StaticAnalysis/FileAnalyser.php',
'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\Function_' => $vendorDir . '/phpunit/php-code-coverage/src/StaticAnalysis/Value/Function_.php',
'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\IgnoredLinesFindingVisitor' => $vendorDir . '/phpunit/php-code-coverage/src/StaticAnalysis/IgnoredLinesFindingVisitor.php', 'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\IgnoredLinesFindingVisitor' => $vendorDir . '/phpunit/php-code-coverage/src/StaticAnalysis/IgnoredLinesFindingVisitor.php',
'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\Interface_' => $vendorDir . '/phpunit/php-code-coverage/src/StaticAnalysis/Value/Interface_.php',
'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\LinesOfCode' => $vendorDir . '/phpunit/php-code-coverage/src/StaticAnalysis/Value/LinesOfCode.php',
'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\Method' => $vendorDir . '/phpunit/php-code-coverage/src/StaticAnalysis/Value/Method.php',
'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\ParsingFileAnalyser' => $vendorDir . '/phpunit/php-code-coverage/src/StaticAnalysis/ParsingFileAnalyser.php', 'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\ParsingFileAnalyser' => $vendorDir . '/phpunit/php-code-coverage/src/StaticAnalysis/ParsingFileAnalyser.php',
'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\Trait_' => $vendorDir . '/phpunit/php-code-coverage/src/StaticAnalysis/Value/Trait_.php',
'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\Visibility' => $vendorDir . '/phpunit/php-code-coverage/src/StaticAnalysis/Value/Visibility.php',
'SebastianBergmann\\CodeCoverage\\TestIdMissingException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/TestIdMissingException.php', 'SebastianBergmann\\CodeCoverage\\TestIdMissingException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/TestIdMissingException.php',
'SebastianBergmann\\CodeCoverage\\Test\\Target\\Class_' => $vendorDir . '/phpunit/php-code-coverage/src/Target/Class_.php',
'SebastianBergmann\\CodeCoverage\\Test\\Target\\ClassesThatExtendClass' => $vendorDir . '/phpunit/php-code-coverage/src/Target/ClassesThatExtendClass.php',
'SebastianBergmann\\CodeCoverage\\Test\\Target\\ClassesThatImplementInterface' => $vendorDir . '/phpunit/php-code-coverage/src/Target/ClassesThatImplementInterface.php',
'SebastianBergmann\\CodeCoverage\\Test\\Target\\Function_' => $vendorDir . '/phpunit/php-code-coverage/src/Target/Function_.php',
'SebastianBergmann\\CodeCoverage\\Test\\Target\\InvalidCodeCoverageTargetException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/InvalidCodeCoverageTargetException.php',
'SebastianBergmann\\CodeCoverage\\Test\\Target\\MapBuilder' => $vendorDir . '/phpunit/php-code-coverage/src/Target/MapBuilder.php',
'SebastianBergmann\\CodeCoverage\\Test\\Target\\Mapper' => $vendorDir . '/phpunit/php-code-coverage/src/Target/Mapper.php',
'SebastianBergmann\\CodeCoverage\\Test\\Target\\Method' => $vendorDir . '/phpunit/php-code-coverage/src/Target/Method.php',
'SebastianBergmann\\CodeCoverage\\Test\\Target\\Namespace_' => $vendorDir . '/phpunit/php-code-coverage/src/Target/Namespace_.php',
'SebastianBergmann\\CodeCoverage\\Test\\Target\\Target' => $vendorDir . '/phpunit/php-code-coverage/src/Target/Target.php',
'SebastianBergmann\\CodeCoverage\\Test\\Target\\TargetCollection' => $vendorDir . '/phpunit/php-code-coverage/src/Target/TargetCollection.php',
'SebastianBergmann\\CodeCoverage\\Test\\Target\\TargetCollectionIterator' => $vendorDir . '/phpunit/php-code-coverage/src/Target/TargetCollectionIterator.php',
'SebastianBergmann\\CodeCoverage\\Test\\Target\\TargetCollectionValidator' => $vendorDir . '/phpunit/php-code-coverage/src/Target/TargetCollectionValidator.php',
'SebastianBergmann\\CodeCoverage\\Test\\Target\\Trait_' => $vendorDir . '/phpunit/php-code-coverage/src/Target/Trait_.php',
'SebastianBergmann\\CodeCoverage\\Test\\Target\\ValidationFailure' => $vendorDir . '/phpunit/php-code-coverage/src/Target/ValidationFailure.php',
'SebastianBergmann\\CodeCoverage\\Test\\Target\\ValidationResult' => $vendorDir . '/phpunit/php-code-coverage/src/Target/ValidationResult.php',
'SebastianBergmann\\CodeCoverage\\Test\\Target\\ValidationSuccess' => $vendorDir . '/phpunit/php-code-coverage/src/Target/ValidationSuccess.php',
'SebastianBergmann\\CodeCoverage\\Test\\TestSize\\Known' => $vendorDir . '/phpunit/php-code-coverage/src/TestSize/Known.php', 'SebastianBergmann\\CodeCoverage\\Test\\TestSize\\Known' => $vendorDir . '/phpunit/php-code-coverage/src/TestSize/Known.php',
'SebastianBergmann\\CodeCoverage\\Test\\TestSize\\Large' => $vendorDir . '/phpunit/php-code-coverage/src/TestSize/Large.php', 'SebastianBergmann\\CodeCoverage\\Test\\TestSize\\Large' => $vendorDir . '/phpunit/php-code-coverage/src/TestSize/Large.php',
'SebastianBergmann\\CodeCoverage\\Test\\TestSize\\Medium' => $vendorDir . '/phpunit/php-code-coverage/src/TestSize/Medium.php', 'SebastianBergmann\\CodeCoverage\\Test\\TestSize\\Medium' => $vendorDir . '/phpunit/php-code-coverage/src/TestSize/Medium.php',
@ -1396,6 +1099,23 @@ return array(
'SebastianBergmann\\CodeCoverage\\Util\\Percentage' => $vendorDir . '/phpunit/php-code-coverage/src/Util/Percentage.php', 'SebastianBergmann\\CodeCoverage\\Util\\Percentage' => $vendorDir . '/phpunit/php-code-coverage/src/Util/Percentage.php',
'SebastianBergmann\\CodeCoverage\\Version' => $vendorDir . '/phpunit/php-code-coverage/src/Version.php', 'SebastianBergmann\\CodeCoverage\\Version' => $vendorDir . '/phpunit/php-code-coverage/src/Version.php',
'SebastianBergmann\\CodeCoverage\\XmlException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/XmlException.php', 'SebastianBergmann\\CodeCoverage\\XmlException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/XmlException.php',
'SebastianBergmann\\CodeUnitReverseLookup\\Wizard' => $vendorDir . '/sebastian/code-unit-reverse-lookup/src/Wizard.php',
'SebastianBergmann\\CodeUnit\\ClassMethodUnit' => $vendorDir . '/sebastian/code-unit/src/ClassMethodUnit.php',
'SebastianBergmann\\CodeUnit\\ClassUnit' => $vendorDir . '/sebastian/code-unit/src/ClassUnit.php',
'SebastianBergmann\\CodeUnit\\CodeUnit' => $vendorDir . '/sebastian/code-unit/src/CodeUnit.php',
'SebastianBergmann\\CodeUnit\\CodeUnitCollection' => $vendorDir . '/sebastian/code-unit/src/CodeUnitCollection.php',
'SebastianBergmann\\CodeUnit\\CodeUnitCollectionIterator' => $vendorDir . '/sebastian/code-unit/src/CodeUnitCollectionIterator.php',
'SebastianBergmann\\CodeUnit\\Exception' => $vendorDir . '/sebastian/code-unit/src/exceptions/Exception.php',
'SebastianBergmann\\CodeUnit\\FileUnit' => $vendorDir . '/sebastian/code-unit/src/FileUnit.php',
'SebastianBergmann\\CodeUnit\\FunctionUnit' => $vendorDir . '/sebastian/code-unit/src/FunctionUnit.php',
'SebastianBergmann\\CodeUnit\\InterfaceMethodUnit' => $vendorDir . '/sebastian/code-unit/src/InterfaceMethodUnit.php',
'SebastianBergmann\\CodeUnit\\InterfaceUnit' => $vendorDir . '/sebastian/code-unit/src/InterfaceUnit.php',
'SebastianBergmann\\CodeUnit\\InvalidCodeUnitException' => $vendorDir . '/sebastian/code-unit/src/exceptions/InvalidCodeUnitException.php',
'SebastianBergmann\\CodeUnit\\Mapper' => $vendorDir . '/sebastian/code-unit/src/Mapper.php',
'SebastianBergmann\\CodeUnit\\NoTraitException' => $vendorDir . '/sebastian/code-unit/src/exceptions/NoTraitException.php',
'SebastianBergmann\\CodeUnit\\ReflectionException' => $vendorDir . '/sebastian/code-unit/src/exceptions/ReflectionException.php',
'SebastianBergmann\\CodeUnit\\TraitMethodUnit' => $vendorDir . '/sebastian/code-unit/src/TraitMethodUnit.php',
'SebastianBergmann\\CodeUnit\\TraitUnit' => $vendorDir . '/sebastian/code-unit/src/TraitUnit.php',
'SebastianBergmann\\Comparator\\ArrayComparator' => $vendorDir . '/sebastian/comparator/src/ArrayComparator.php', 'SebastianBergmann\\Comparator\\ArrayComparator' => $vendorDir . '/sebastian/comparator/src/ArrayComparator.php',
'SebastianBergmann\\Comparator\\Comparator' => $vendorDir . '/sebastian/comparator/src/Comparator.php', 'SebastianBergmann\\Comparator\\Comparator' => $vendorDir . '/sebastian/comparator/src/Comparator.php',
'SebastianBergmann\\Comparator\\ComparisonFailure' => $vendorDir . '/sebastian/comparator/src/ComparisonFailure.php', 'SebastianBergmann\\Comparator\\ComparisonFailure' => $vendorDir . '/sebastian/comparator/src/ComparisonFailure.php',
@ -1460,6 +1180,7 @@ return array(
'SebastianBergmann\\LinesOfCode\\IllogicalValuesException' => $vendorDir . '/sebastian/lines-of-code/src/Exception/IllogicalValuesException.php', 'SebastianBergmann\\LinesOfCode\\IllogicalValuesException' => $vendorDir . '/sebastian/lines-of-code/src/Exception/IllogicalValuesException.php',
'SebastianBergmann\\LinesOfCode\\LineCountingVisitor' => $vendorDir . '/sebastian/lines-of-code/src/LineCountingVisitor.php', 'SebastianBergmann\\LinesOfCode\\LineCountingVisitor' => $vendorDir . '/sebastian/lines-of-code/src/LineCountingVisitor.php',
'SebastianBergmann\\LinesOfCode\\LinesOfCode' => $vendorDir . '/sebastian/lines-of-code/src/LinesOfCode.php', 'SebastianBergmann\\LinesOfCode\\LinesOfCode' => $vendorDir . '/sebastian/lines-of-code/src/LinesOfCode.php',
'SebastianBergmann\\LinesOfCode\\NegativeValueException' => $vendorDir . '/sebastian/lines-of-code/src/Exception/NegativeValueException.php',
'SebastianBergmann\\LinesOfCode\\RuntimeException' => $vendorDir . '/sebastian/lines-of-code/src/Exception/RuntimeException.php', 'SebastianBergmann\\LinesOfCode\\RuntimeException' => $vendorDir . '/sebastian/lines-of-code/src/Exception/RuntimeException.php',
'SebastianBergmann\\ObjectEnumerator\\Enumerator' => $vendorDir . '/sebastian/object-enumerator/src/Enumerator.php', 'SebastianBergmann\\ObjectEnumerator\\Enumerator' => $vendorDir . '/sebastian/object-enumerator/src/Enumerator.php',
'SebastianBergmann\\ObjectReflector\\ObjectReflector' => $vendorDir . '/sebastian/object-reflector/src/ObjectReflector.php', 'SebastianBergmann\\ObjectReflector\\ObjectReflector' => $vendorDir . '/sebastian/object-reflector/src/ObjectReflector.php',
@ -1504,16 +1225,6 @@ return array(
'TheSeer\\Tokenizer\\TokenCollectionException' => $vendorDir . '/theseer/tokenizer/src/TokenCollectionException.php', 'TheSeer\\Tokenizer\\TokenCollectionException' => $vendorDir . '/theseer/tokenizer/src/TokenCollectionException.php',
'TheSeer\\Tokenizer\\Tokenizer' => $vendorDir . '/theseer/tokenizer/src/Tokenizer.php', 'TheSeer\\Tokenizer\\Tokenizer' => $vendorDir . '/theseer/tokenizer/src/Tokenizer.php',
'TheSeer\\Tokenizer\\XMLSerializer' => $vendorDir . '/theseer/tokenizer/src/XMLSerializer.php', 'TheSeer\\Tokenizer\\XMLSerializer' => $vendorDir . '/theseer/tokenizer/src/XMLSerializer.php',
'goodboyalex\\php_components_pack\\classes\\ActionState' => $baseDir . '/sources/classes/ActionState.php',
'goodboyalex\\php_components_pack\\classes\\ClassMapper' => $baseDir . '/sources/classes/ClassMapper.php',
'goodboyalex\\php_components_pack\\enums\\MessageType' => $baseDir . '/sources/enums/MessageType.php',
'goodboyalex\\php_components_pack\\extensions\\ArrayExtension' => $baseDir . '/sources/extensions/ArrayExtension.php',
'goodboyalex\\php_components_pack\\extensions\\GUIDExtension' => $baseDir . '/sources/extensions/GUIDExtension.php',
'goodboyalex\\php_components_pack\\extensions\\StringExtension' => $baseDir . '/sources/extensions/StringExtension.php',
'goodboyalex\\php_components_pack\\interfaces\\ISerializable' => $baseDir . '/sources/interfaces/ISerializable.php',
'goodboyalex\\php_components_pack\\models\\ActionStateMessageModel' => $baseDir . '/sources/models/ActionStateMessageModel.php',
'goodboyalex\\php_components_pack\\tests\\GUIDExtensionTest' => $baseDir . '/tests/GUIDExtensionTest.php',
'goodboyalex\\php_components_pack\\traits\\EnumExtensionsTrait' => $baseDir . '/sources/traits/EnumExtensionsTrait.php',
'staabm\\SideEffectsDetector\\SideEffect' => $vendorDir . '/staabm/side-effects-detector/lib/SideEffect.php', 'staabm\\SideEffectsDetector\\SideEffect' => $vendorDir . '/staabm/side-effects-detector/lib/SideEffect.php',
'staabm\\SideEffectsDetector\\SideEffectsDetector' => $vendorDir . '/staabm/side-effects-detector/lib/SideEffectsDetector.php', 'staabm\\SideEffectsDetector\\SideEffectsDetector' => $vendorDir . '/staabm/side-effects-detector/lib/SideEffectsDetector.php',
); );

View File

@ -12,6 +12,7 @@ return array(
'goodboyalex\\php_components_pack\\interfaces\\' => array($baseDir . '/sources/interfaces'), 'goodboyalex\\php_components_pack\\interfaces\\' => array($baseDir . '/sources/interfaces'),
'goodboyalex\\php_components_pack\\extensions\\' => array($baseDir . '/sources/extensions'), 'goodboyalex\\php_components_pack\\extensions\\' => array($baseDir . '/sources/extensions'),
'goodboyalex\\php_components_pack\\enums\\' => array($baseDir . '/sources/enums'), 'goodboyalex\\php_components_pack\\enums\\' => array($baseDir . '/sources/enums'),
'goodboyalex\\php_components_pack\\classes\\' => array($baseDir . '/sources/classes'),
'goodboyalex\\php_components_pack\\' => array($baseDir . '/sources'), 'goodboyalex\\php_components_pack\\' => array($baseDir . '/sources'),
'PhpParser\\' => array($vendorDir . '/nikic/php-parser/lib/PhpParser'), 'PhpParser\\' => array($vendorDir . '/nikic/php-parser/lib/PhpParser'),
'DeepCopy\\' => array($vendorDir . '/myclabs/deep-copy/src/DeepCopy'), 'DeepCopy\\' => array($vendorDir . '/myclabs/deep-copy/src/DeepCopy'),

View File

@ -20,6 +20,7 @@ class ComposerStaticInitc00e5b601adae61bbbc3f6be4864ef55
'goodboyalex\\php_components_pack\\interfaces\\' => 43, 'goodboyalex\\php_components_pack\\interfaces\\' => 43,
'goodboyalex\\php_components_pack\\extensions\\' => 43, 'goodboyalex\\php_components_pack\\extensions\\' => 43,
'goodboyalex\\php_components_pack\\enums\\' => 38, 'goodboyalex\\php_components_pack\\enums\\' => 38,
'goodboyalex\\php_components_pack\\classes\\' => 40,
'goodboyalex\\php_components_pack\\' => 32, 'goodboyalex\\php_components_pack\\' => 32,
), ),
'P' => 'P' =>
@ -57,6 +58,10 @@ class ComposerStaticInitc00e5b601adae61bbbc3f6be4864ef55
array ( array (
0 => __DIR__ . '/../..' . '/sources/enums', 0 => __DIR__ . '/../..' . '/sources/enums',
), ),
'goodboyalex\\php_components_pack\\classes\\' =>
array (
0 => __DIR__ . '/../..' . '/sources/classes',
),
'goodboyalex\\php_components_pack\\' => 'goodboyalex\\php_components_pack\\' =>
array ( array (
0 => __DIR__ . '/../..' . '/sources', 0 => __DIR__ . '/../..' . '/sources',
@ -73,32 +78,6 @@ class ComposerStaticInitc00e5b601adae61bbbc3f6be4864ef55
public static $classMap = array ( public static $classMap = array (
'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php', 'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php',
'DeepCopy\\DeepCopy' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/DeepCopy.php',
'DeepCopy\\Exception\\CloneException' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/Exception/CloneException.php',
'DeepCopy\\Exception\\PropertyException' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/Exception/PropertyException.php',
'DeepCopy\\Filter\\ChainableFilter' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/Filter/ChainableFilter.php',
'DeepCopy\\Filter\\Doctrine\\DoctrineCollectionFilter' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/Filter/Doctrine/DoctrineCollectionFilter.php',
'DeepCopy\\Filter\\Doctrine\\DoctrineEmptyCollectionFilter' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/Filter/Doctrine/DoctrineEmptyCollectionFilter.php',
'DeepCopy\\Filter\\Doctrine\\DoctrineProxyFilter' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/Filter/Doctrine/DoctrineProxyFilter.php',
'DeepCopy\\Filter\\Filter' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/Filter/Filter.php',
'DeepCopy\\Filter\\KeepFilter' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/Filter/KeepFilter.php',
'DeepCopy\\Filter\\ReplaceFilter' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/Filter/ReplaceFilter.php',
'DeepCopy\\Filter\\SetNullFilter' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/Filter/SetNullFilter.php',
'DeepCopy\\Matcher\\Doctrine\\DoctrineProxyMatcher' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/Matcher/Doctrine/DoctrineProxyMatcher.php',
'DeepCopy\\Matcher\\Matcher' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/Matcher/Matcher.php',
'DeepCopy\\Matcher\\PropertyMatcher' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/Matcher/PropertyMatcher.php',
'DeepCopy\\Matcher\\PropertyNameMatcher' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/Matcher/PropertyNameMatcher.php',
'DeepCopy\\Matcher\\PropertyTypeMatcher' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/Matcher/PropertyTypeMatcher.php',
'DeepCopy\\Reflection\\ReflectionHelper' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/Reflection/ReflectionHelper.php',
'DeepCopy\\TypeFilter\\Date\\DateIntervalFilter' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/TypeFilter/Date/DateIntervalFilter.php',
'DeepCopy\\TypeFilter\\Date\\DatePeriodFilter' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/TypeFilter/Date/DatePeriodFilter.php',
'DeepCopy\\TypeFilter\\ReplaceFilter' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/TypeFilter/ReplaceFilter.php',
'DeepCopy\\TypeFilter\\ShallowCopyFilter' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/TypeFilter/ShallowCopyFilter.php',
'DeepCopy\\TypeFilter\\Spl\\ArrayObjectFilter' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/TypeFilter/Spl/ArrayObjectFilter.php',
'DeepCopy\\TypeFilter\\Spl\\SplDoublyLinkedList' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/TypeFilter/Spl/SplDoublyLinkedList.php',
'DeepCopy\\TypeFilter\\Spl\\SplDoublyLinkedListFilter' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/TypeFilter/Spl/SplDoublyLinkedListFilter.php',
'DeepCopy\\TypeFilter\\TypeFilter' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/TypeFilter/TypeFilter.php',
'DeepCopy\\TypeMatcher\\TypeMatcher' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/TypeMatcher/TypeMatcher.php',
'PHPUnit\\Event\\Application\\Finished' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Application/Finished.php', 'PHPUnit\\Event\\Application\\Finished' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Application/Finished.php',
'PHPUnit\\Event\\Application\\FinishedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Application/FinishedSubscriber.php', 'PHPUnit\\Event\\Application\\FinishedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Application/FinishedSubscriber.php',
'PHPUnit\\Event\\Application\\Started' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Application/Started.php', 'PHPUnit\\Event\\Application\\Started' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Application/Started.php',
@ -156,10 +135,11 @@ class ComposerStaticInitc00e5b601adae61bbbc3f6be4864ef55
'PHPUnit\\Event\\Telemetry\\Info' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Telemetry/Info.php', 'PHPUnit\\Event\\Telemetry\\Info' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Telemetry/Info.php',
'PHPUnit\\Event\\Telemetry\\MemoryMeter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Telemetry/MemoryMeter.php', 'PHPUnit\\Event\\Telemetry\\MemoryMeter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Telemetry/MemoryMeter.php',
'PHPUnit\\Event\\Telemetry\\MemoryUsage' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Telemetry/MemoryUsage.php', 'PHPUnit\\Event\\Telemetry\\MemoryUsage' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Telemetry/MemoryUsage.php',
'PHPUnit\\Event\\Telemetry\\Php81GarbageCollectorStatusProvider' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Telemetry/Php81GarbageCollectorStatusProvider.php',
'PHPUnit\\Event\\Telemetry\\Php83GarbageCollectorStatusProvider' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Telemetry/Php83GarbageCollectorStatusProvider.php',
'PHPUnit\\Event\\Telemetry\\Snapshot' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Telemetry/Snapshot.php', 'PHPUnit\\Event\\Telemetry\\Snapshot' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Telemetry/Snapshot.php',
'PHPUnit\\Event\\Telemetry\\StopWatch' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Telemetry/StopWatch.php', 'PHPUnit\\Event\\Telemetry\\StopWatch' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Telemetry/StopWatch.php',
'PHPUnit\\Event\\Telemetry\\System' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Telemetry/System.php', 'PHPUnit\\Event\\Telemetry\\System' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Telemetry/System.php',
'PHPUnit\\Event\\Telemetry\\SystemGarbageCollectorStatusProvider' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Telemetry/SystemGarbageCollectorStatusProvider.php',
'PHPUnit\\Event\\Telemetry\\SystemMemoryMeter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Telemetry/SystemMemoryMeter.php', 'PHPUnit\\Event\\Telemetry\\SystemMemoryMeter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Telemetry/SystemMemoryMeter.php',
'PHPUnit\\Event\\Telemetry\\SystemStopWatch' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Telemetry/SystemStopWatch.php', 'PHPUnit\\Event\\Telemetry\\SystemStopWatch' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Telemetry/SystemStopWatch.php',
'PHPUnit\\Event\\Telemetry\\SystemStopWatchWithOffset' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Telemetry/SystemStopWatchWithOffset.php', 'PHPUnit\\Event\\Telemetry\\SystemStopWatchWithOffset' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Telemetry/SystemStopWatchWithOffset.php',
@ -266,8 +246,14 @@ class ComposerStaticInitc00e5b601adae61bbbc3f6be4864ef55
'PHPUnit\\Event\\Test\\MarkedIncompleteSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Outcome/MarkedIncompleteSubscriber.php', 'PHPUnit\\Event\\Test\\MarkedIncompleteSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Outcome/MarkedIncompleteSubscriber.php',
'PHPUnit\\Event\\Test\\MockObjectCreated' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/MockObjectCreated.php', 'PHPUnit\\Event\\Test\\MockObjectCreated' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/MockObjectCreated.php',
'PHPUnit\\Event\\Test\\MockObjectCreatedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/MockObjectCreatedSubscriber.php', 'PHPUnit\\Event\\Test\\MockObjectCreatedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/MockObjectCreatedSubscriber.php',
'PHPUnit\\Event\\Test\\MockObjectForAbstractClassCreated' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/MockObjectForAbstractClassCreated.php',
'PHPUnit\\Event\\Test\\MockObjectForAbstractClassCreatedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/MockObjectForAbstractClassCreatedSubscriber.php',
'PHPUnit\\Event\\Test\\MockObjectForIntersectionOfInterfacesCreated' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/MockObjectForIntersectionOfInterfacesCreated.php', 'PHPUnit\\Event\\Test\\MockObjectForIntersectionOfInterfacesCreated' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/MockObjectForIntersectionOfInterfacesCreated.php',
'PHPUnit\\Event\\Test\\MockObjectForIntersectionOfInterfacesCreatedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/MockObjectForIntersectionOfInterfacesCreatedSubscriber.php', 'PHPUnit\\Event\\Test\\MockObjectForIntersectionOfInterfacesCreatedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/MockObjectForIntersectionOfInterfacesCreatedSubscriber.php',
'PHPUnit\\Event\\Test\\MockObjectForTraitCreated' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/MockObjectForTraitCreated.php',
'PHPUnit\\Event\\Test\\MockObjectForTraitCreatedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/MockObjectForTraitCreatedSubscriber.php',
'PHPUnit\\Event\\Test\\MockObjectFromWsdlCreated' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/MockObjectFromWsdlCreated.php',
'PHPUnit\\Event\\Test\\MockObjectFromWsdlCreatedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/MockObjectFromWsdlCreatedSubscriber.php',
'PHPUnit\\Event\\Test\\NoComparisonFailureException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Exception/NoComparisonFailureException.php', 'PHPUnit\\Event\\Test\\NoComparisonFailureException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Exception/NoComparisonFailureException.php',
'PHPUnit\\Event\\Test\\NoticeTriggered' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Issue/NoticeTriggered.php', 'PHPUnit\\Event\\Test\\NoticeTriggered' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Issue/NoticeTriggered.php',
'PHPUnit\\Event\\Test\\NoticeTriggeredSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Issue/NoticeTriggeredSubscriber.php', 'PHPUnit\\Event\\Test\\NoticeTriggeredSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Issue/NoticeTriggeredSubscriber.php',
@ -309,6 +295,8 @@ class ComposerStaticInitc00e5b601adae61bbbc3f6be4864ef55
'PHPUnit\\Event\\Test\\PrintedUnexpectedOutputSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/PrintedUnexpectedOutputSubscriber.php', 'PHPUnit\\Event\\Test\\PrintedUnexpectedOutputSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/PrintedUnexpectedOutputSubscriber.php',
'PHPUnit\\Event\\Test\\Skipped' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Outcome/Skipped.php', 'PHPUnit\\Event\\Test\\Skipped' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Outcome/Skipped.php',
'PHPUnit\\Event\\Test\\SkippedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Outcome/SkippedSubscriber.php', 'PHPUnit\\Event\\Test\\SkippedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Outcome/SkippedSubscriber.php',
'PHPUnit\\Event\\Test\\TestProxyCreated' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/TestProxyCreated.php',
'PHPUnit\\Event\\Test\\TestProxyCreatedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/TestProxyCreatedSubscriber.php',
'PHPUnit\\Event\\Test\\TestStubCreated' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/TestStubCreated.php', 'PHPUnit\\Event\\Test\\TestStubCreated' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/TestStubCreated.php',
'PHPUnit\\Event\\Test\\TestStubCreatedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/TestStubCreatedSubscriber.php', 'PHPUnit\\Event\\Test\\TestStubCreatedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/TestStubCreatedSubscriber.php',
'PHPUnit\\Event\\Test\\TestStubForIntersectionOfInterfacesCreated' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/TestStubForIntersectionOfInterfacesCreated.php', 'PHPUnit\\Event\\Test\\TestStubForIntersectionOfInterfacesCreated' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/TestStubForIntersectionOfInterfacesCreated.php',
@ -332,11 +320,8 @@ class ComposerStaticInitc00e5b601adae61bbbc3f6be4864ef55
'PHPUnit\\Framework\\Attributes\\Before' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/Before.php', 'PHPUnit\\Framework\\Attributes\\Before' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/Before.php',
'PHPUnit\\Framework\\Attributes\\BeforeClass' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/BeforeClass.php', 'PHPUnit\\Framework\\Attributes\\BeforeClass' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/BeforeClass.php',
'PHPUnit\\Framework\\Attributes\\CoversClass' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/CoversClass.php', 'PHPUnit\\Framework\\Attributes\\CoversClass' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/CoversClass.php',
'PHPUnit\\Framework\\Attributes\\CoversClassesThatExtendClass' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/CoversClassesThatExtendClass.php',
'PHPUnit\\Framework\\Attributes\\CoversClassesThatImplementInterface' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/CoversClassesThatImplementInterface.php',
'PHPUnit\\Framework\\Attributes\\CoversFunction' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/CoversFunction.php', 'PHPUnit\\Framework\\Attributes\\CoversFunction' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/CoversFunction.php',
'PHPUnit\\Framework\\Attributes\\CoversMethod' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/CoversMethod.php', 'PHPUnit\\Framework\\Attributes\\CoversMethod' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/CoversMethod.php',
'PHPUnit\\Framework\\Attributes\\CoversNamespace' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/CoversNamespace.php',
'PHPUnit\\Framework\\Attributes\\CoversNothing' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/CoversNothing.php', 'PHPUnit\\Framework\\Attributes\\CoversNothing' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/CoversNothing.php',
'PHPUnit\\Framework\\Attributes\\CoversTrait' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/CoversTrait.php', 'PHPUnit\\Framework\\Attributes\\CoversTrait' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/CoversTrait.php',
'PHPUnit\\Framework\\Attributes\\DataProvider' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/DataProvider.php', 'PHPUnit\\Framework\\Attributes\\DataProvider' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/DataProvider.php',
@ -362,7 +347,6 @@ class ComposerStaticInitc00e5b601adae61bbbc3f6be4864ef55
'PHPUnit\\Framework\\Attributes\\PostCondition' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/PostCondition.php', 'PHPUnit\\Framework\\Attributes\\PostCondition' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/PostCondition.php',
'PHPUnit\\Framework\\Attributes\\PreCondition' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/PreCondition.php', 'PHPUnit\\Framework\\Attributes\\PreCondition' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/PreCondition.php',
'PHPUnit\\Framework\\Attributes\\PreserveGlobalState' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/PreserveGlobalState.php', 'PHPUnit\\Framework\\Attributes\\PreserveGlobalState' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/PreserveGlobalState.php',
'PHPUnit\\Framework\\Attributes\\RequiresEnvironmentVariable' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/RequiresEnvironmentVariable.php',
'PHPUnit\\Framework\\Attributes\\RequiresFunction' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/RequiresFunction.php', 'PHPUnit\\Framework\\Attributes\\RequiresFunction' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/RequiresFunction.php',
'PHPUnit\\Framework\\Attributes\\RequiresMethod' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/RequiresMethod.php', 'PHPUnit\\Framework\\Attributes\\RequiresMethod' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/RequiresMethod.php',
'PHPUnit\\Framework\\Attributes\\RequiresOperatingSystem' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/RequiresOperatingSystem.php', 'PHPUnit\\Framework\\Attributes\\RequiresOperatingSystem' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/RequiresOperatingSystem.php',
@ -382,11 +366,8 @@ class ComposerStaticInitc00e5b601adae61bbbc3f6be4864ef55
'PHPUnit\\Framework\\Attributes\\TestWithJson' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/TestWithJson.php', 'PHPUnit\\Framework\\Attributes\\TestWithJson' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/TestWithJson.php',
'PHPUnit\\Framework\\Attributes\\Ticket' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/Ticket.php', 'PHPUnit\\Framework\\Attributes\\Ticket' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/Ticket.php',
'PHPUnit\\Framework\\Attributes\\UsesClass' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/UsesClass.php', 'PHPUnit\\Framework\\Attributes\\UsesClass' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/UsesClass.php',
'PHPUnit\\Framework\\Attributes\\UsesClassesThatExtendClass' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/UsesClassesThatExtendClass.php',
'PHPUnit\\Framework\\Attributes\\UsesClassesThatImplementInterface' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/UsesClassesThatImplementInterface.php',
'PHPUnit\\Framework\\Attributes\\UsesFunction' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/UsesFunction.php', 'PHPUnit\\Framework\\Attributes\\UsesFunction' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/UsesFunction.php',
'PHPUnit\\Framework\\Attributes\\UsesMethod' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/UsesMethod.php', 'PHPUnit\\Framework\\Attributes\\UsesMethod' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/UsesMethod.php',
'PHPUnit\\Framework\\Attributes\\UsesNamespace' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/UsesNamespace.php',
'PHPUnit\\Framework\\Attributes\\UsesTrait' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/UsesTrait.php', 'PHPUnit\\Framework\\Attributes\\UsesTrait' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/UsesTrait.php',
'PHPUnit\\Framework\\Attributes\\WithoutErrorHandler' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/WithoutErrorHandler.php', 'PHPUnit\\Framework\\Attributes\\WithoutErrorHandler' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/WithoutErrorHandler.php',
'PHPUnit\\Framework\\CodeCoverageException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/CodeCoverageException.php', 'PHPUnit\\Framework\\CodeCoverageException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/CodeCoverageException.php',
@ -468,26 +449,36 @@ class ComposerStaticInitc00e5b601adae61bbbc3f6be4864ef55
'PHPUnit\\Framework\\MockObject\\Builder\\MethodNameMatch' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Builder/MethodNameMatch.php', 'PHPUnit\\Framework\\MockObject\\Builder\\MethodNameMatch' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Builder/MethodNameMatch.php',
'PHPUnit\\Framework\\MockObject\\Builder\\ParametersMatch' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Builder/ParametersMatch.php', 'PHPUnit\\Framework\\MockObject\\Builder\\ParametersMatch' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Builder/ParametersMatch.php',
'PHPUnit\\Framework\\MockObject\\Builder\\Stub' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Builder/Stub.php', 'PHPUnit\\Framework\\MockObject\\Builder\\Stub' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Builder/Stub.php',
'PHPUnit\\Framework\\MockObject\\CannotCloneTestDoubleForReadonlyClassException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/CannotCloneTestDoubleForReadonlyClassException.php',
'PHPUnit\\Framework\\MockObject\\CannotUseOnlyMethodsException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/CannotUseOnlyMethodsException.php', 'PHPUnit\\Framework\\MockObject\\CannotUseOnlyMethodsException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/CannotUseOnlyMethodsException.php',
'PHPUnit\\Framework\\MockObject\\ConfigurableMethod' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/ConfigurableMethod.php', 'PHPUnit\\Framework\\MockObject\\ConfigurableMethod' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/ConfigurableMethod.php',
'PHPUnit\\Framework\\MockObject\\DoubledCloneMethod' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Api/DoubledCloneMethod.php', 'PHPUnit\\Framework\\MockObject\\DoubledCloneMethod' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Api/DoubledCloneMethod.php',
'PHPUnit\\Framework\\MockObject\\ErrorCloneMethod' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Api/ErrorCloneMethod.php',
'PHPUnit\\Framework\\MockObject\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/Exception.php', 'PHPUnit\\Framework\\MockObject\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/Exception.php',
'PHPUnit\\Framework\\MockObject\\GeneratedAsMockObject' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Api/GeneratedAsMockObject.php',
'PHPUnit\\Framework\\MockObject\\GeneratedAsTestStub' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Api/GeneratedAsTestStub.php',
'PHPUnit\\Framework\\MockObject\\Generator\\CannotUseAddMethodsException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/CannotUseAddMethodsException.php',
'PHPUnit\\Framework\\MockObject\\Generator\\ClassIsEnumerationException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/ClassIsEnumerationException.php', 'PHPUnit\\Framework\\MockObject\\Generator\\ClassIsEnumerationException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/ClassIsEnumerationException.php',
'PHPUnit\\Framework\\MockObject\\Generator\\ClassIsFinalException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/ClassIsFinalException.php', 'PHPUnit\\Framework\\MockObject\\Generator\\ClassIsFinalException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/ClassIsFinalException.php',
'PHPUnit\\Framework\\MockObject\\Generator\\DoubledClass' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/DoubledClass.php',
'PHPUnit\\Framework\\MockObject\\Generator\\DoubledMethod' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/DoubledMethod.php',
'PHPUnit\\Framework\\MockObject\\Generator\\DoubledMethodSet' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/DoubledMethodSet.php',
'PHPUnit\\Framework\\MockObject\\Generator\\DuplicateMethodException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/DuplicateMethodException.php', 'PHPUnit\\Framework\\MockObject\\Generator\\DuplicateMethodException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/DuplicateMethodException.php',
'PHPUnit\\Framework\\MockObject\\Generator\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/Exception.php', 'PHPUnit\\Framework\\MockObject\\Generator\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/Exception.php',
'PHPUnit\\Framework\\MockObject\\Generator\\Generator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/Generator.php', 'PHPUnit\\Framework\\MockObject\\Generator\\Generator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/Generator.php',
'PHPUnit\\Framework\\MockObject\\Generator\\HookedProperty' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/HookedProperty.php', 'PHPUnit\\Framework\\MockObject\\Generator\\HookedProperty' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/HookedProperty.php',
'PHPUnit\\Framework\\MockObject\\Generator\\HookedPropertyGenerator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/HookedPropertyGenerator.php', 'PHPUnit\\Framework\\MockObject\\Generator\\HookedPropertyGenerator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/HookedPropertyGenerator.php',
'PHPUnit\\Framework\\MockObject\\Generator\\InvalidMethodNameException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/InvalidMethodNameException.php', 'PHPUnit\\Framework\\MockObject\\Generator\\InvalidMethodNameException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/InvalidMethodNameException.php',
'PHPUnit\\Framework\\MockObject\\Generator\\MethodNamedMethodException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/MethodNamedMethodException.php', 'PHPUnit\\Framework\\MockObject\\Generator\\MockClass' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/MockClass.php',
'PHPUnit\\Framework\\MockObject\\Generator\\MockMethod' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/MockMethod.php',
'PHPUnit\\Framework\\MockObject\\Generator\\MockMethodSet' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/MockMethodSet.php',
'PHPUnit\\Framework\\MockObject\\Generator\\MockTrait' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/MockTrait.php',
'PHPUnit\\Framework\\MockObject\\Generator\\MockType' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/MockType.php',
'PHPUnit\\Framework\\MockObject\\Generator\\NameAlreadyInUseException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/NameAlreadyInUseException.php', 'PHPUnit\\Framework\\MockObject\\Generator\\NameAlreadyInUseException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/NameAlreadyInUseException.php',
'PHPUnit\\Framework\\MockObject\\Generator\\OriginalConstructorInvocationRequiredException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/OriginalConstructorInvocationRequiredException.php',
'PHPUnit\\Framework\\MockObject\\Generator\\ReflectionException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/ReflectionException.php', 'PHPUnit\\Framework\\MockObject\\Generator\\ReflectionException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/ReflectionException.php',
'PHPUnit\\Framework\\MockObject\\Generator\\RuntimeException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/RuntimeException.php', 'PHPUnit\\Framework\\MockObject\\Generator\\RuntimeException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/RuntimeException.php',
'PHPUnit\\Framework\\MockObject\\Generator\\SoapExtensionNotAvailableException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/SoapExtensionNotAvailableException.php',
'PHPUnit\\Framework\\MockObject\\Generator\\TemplateLoader' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/TemplateLoader.php', 'PHPUnit\\Framework\\MockObject\\Generator\\TemplateLoader' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/TemplateLoader.php',
'PHPUnit\\Framework\\MockObject\\Generator\\UnknownClassException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/UnknownClassException.php',
'PHPUnit\\Framework\\MockObject\\Generator\\UnknownTraitException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/UnknownTraitException.php',
'PHPUnit\\Framework\\MockObject\\Generator\\UnknownTypeException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/UnknownTypeException.php', 'PHPUnit\\Framework\\MockObject\\Generator\\UnknownTypeException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/UnknownTypeException.php',
'PHPUnit\\Framework\\MockObject\\IncompatibleReturnValueException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/IncompatibleReturnValueException.php', 'PHPUnit\\Framework\\MockObject\\IncompatibleReturnValueException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/IncompatibleReturnValueException.php',
'PHPUnit\\Framework\\MockObject\\Invocation' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Invocation.php', 'PHPUnit\\Framework\\MockObject\\Invocation' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Invocation.php',
@ -505,6 +496,7 @@ class ComposerStaticInitc00e5b601adae61bbbc3f6be4864ef55
'PHPUnit\\Framework\\MockObject\\MockObject' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Interface/MockObject.php', 'PHPUnit\\Framework\\MockObject\\MockObject' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Interface/MockObject.php',
'PHPUnit\\Framework\\MockObject\\MockObjectApi' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Api/MockObjectApi.php', 'PHPUnit\\Framework\\MockObject\\MockObjectApi' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Api/MockObjectApi.php',
'PHPUnit\\Framework\\MockObject\\MockObjectInternal' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Interface/MockObjectInternal.php', 'PHPUnit\\Framework\\MockObject\\MockObjectInternal' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Interface/MockObjectInternal.php',
'PHPUnit\\Framework\\MockObject\\MutableStubApi' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Api/MutableStubApi.php',
'PHPUnit\\Framework\\MockObject\\NeverReturningMethodException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/NeverReturningMethodException.php', 'PHPUnit\\Framework\\MockObject\\NeverReturningMethodException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/NeverReturningMethodException.php',
'PHPUnit\\Framework\\MockObject\\NoMoreReturnValuesConfiguredException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/NoMoreReturnValuesConfiguredException.php', 'PHPUnit\\Framework\\MockObject\\NoMoreReturnValuesConfiguredException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/NoMoreReturnValuesConfiguredException.php',
'PHPUnit\\Framework\\MockObject\\ProxiedCloneMethod' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Api/ProxiedCloneMethod.php', 'PHPUnit\\Framework\\MockObject\\ProxiedCloneMethod' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Api/ProxiedCloneMethod.php',
@ -572,7 +564,7 @@ class ComposerStaticInitc00e5b601adae61bbbc3f6be4864ef55
'PHPUnit\\Framework\\TestSuite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestSuite.php', 'PHPUnit\\Framework\\TestSuite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestSuite.php',
'PHPUnit\\Framework\\TestSuiteIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestSuiteIterator.php', 'PHPUnit\\Framework\\TestSuiteIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestSuiteIterator.php',
'PHPUnit\\Framework\\UnknownClassOrInterfaceException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/UnknownClassOrInterfaceException.php', 'PHPUnit\\Framework\\UnknownClassOrInterfaceException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/UnknownClassOrInterfaceException.php',
'PHPUnit\\Framework\\UnknownNativeTypeException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/UnknownNativeTypeException.php', 'PHPUnit\\Framework\\UnknownTypeException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/UnknownTypeException.php',
'PHPUnit\\Logging\\EventLogger' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/EventLogger.php', 'PHPUnit\\Logging\\EventLogger' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/EventLogger.php',
'PHPUnit\\Logging\\JUnit\\JunitXmlLogger' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/JUnit/JunitXmlLogger.php', 'PHPUnit\\Logging\\JUnit\\JunitXmlLogger' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/JUnit/JunitXmlLogger.php',
'PHPUnit\\Logging\\JUnit\\Subscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/JUnit/Subscriber/Subscriber.php', 'PHPUnit\\Logging\\JUnit\\Subscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/JUnit/Subscriber/Subscriber.php',
@ -629,6 +621,9 @@ class ComposerStaticInitc00e5b601adae61bbbc3f6be4864ef55
'PHPUnit\\Logging\\TestDox\\TestTriggeredWarningSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredWarningSubscriber.php', 'PHPUnit\\Logging\\TestDox\\TestTriggeredWarningSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredWarningSubscriber.php',
'PHPUnit\\Metadata\\After' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/After.php', 'PHPUnit\\Metadata\\After' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/After.php',
'PHPUnit\\Metadata\\AfterClass' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/AfterClass.php', 'PHPUnit\\Metadata\\AfterClass' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/AfterClass.php',
'PHPUnit\\Metadata\\Annotation\\Parser\\DocBlock' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Parser/Annotation/DocBlock.php',
'PHPUnit\\Metadata\\Annotation\\Parser\\Registry' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Parser/Annotation/Registry.php',
'PHPUnit\\Metadata\\AnnotationsAreNotSupportedForInternalClassesException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Exception/AnnotationsAreNotSupportedForInternalClassesException.php',
'PHPUnit\\Metadata\\Api\\CodeCoverage' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Api/CodeCoverage.php', 'PHPUnit\\Metadata\\Api\\CodeCoverage' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Api/CodeCoverage.php',
'PHPUnit\\Metadata\\Api\\DataProvider' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Api/DataProvider.php', 'PHPUnit\\Metadata\\Api\\DataProvider' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Api/DataProvider.php',
'PHPUnit\\Metadata\\Api\\Dependencies' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Api/Dependencies.php', 'PHPUnit\\Metadata\\Api\\Dependencies' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Api/Dependencies.php',
@ -639,12 +634,11 @@ class ComposerStaticInitc00e5b601adae61bbbc3f6be4864ef55
'PHPUnit\\Metadata\\BackupStaticProperties' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/BackupStaticProperties.php', 'PHPUnit\\Metadata\\BackupStaticProperties' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/BackupStaticProperties.php',
'PHPUnit\\Metadata\\Before' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Before.php', 'PHPUnit\\Metadata\\Before' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Before.php',
'PHPUnit\\Metadata\\BeforeClass' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/BeforeClass.php', 'PHPUnit\\Metadata\\BeforeClass' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/BeforeClass.php',
'PHPUnit\\Metadata\\Covers' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Covers.php',
'PHPUnit\\Metadata\\CoversClass' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/CoversClass.php', 'PHPUnit\\Metadata\\CoversClass' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/CoversClass.php',
'PHPUnit\\Metadata\\CoversClassesThatExtendClass' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/CoversClassesThatExtendClass.php', 'PHPUnit\\Metadata\\CoversDefaultClass' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/CoversDefaultClass.php',
'PHPUnit\\Metadata\\CoversClassesThatImplementInterface' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/CoversClassesThatImplementInterface.php',
'PHPUnit\\Metadata\\CoversFunction' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/CoversFunction.php', 'PHPUnit\\Metadata\\CoversFunction' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/CoversFunction.php',
'PHPUnit\\Metadata\\CoversMethod' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/CoversMethod.php', 'PHPUnit\\Metadata\\CoversMethod' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/CoversMethod.php',
'PHPUnit\\Metadata\\CoversNamespace' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/CoversNamespace.php',
'PHPUnit\\Metadata\\CoversNothing' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/CoversNothing.php', 'PHPUnit\\Metadata\\CoversNothing' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/CoversNothing.php',
'PHPUnit\\Metadata\\CoversTrait' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/CoversTrait.php', 'PHPUnit\\Metadata\\CoversTrait' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/CoversTrait.php',
'PHPUnit\\Metadata\\DataProvider' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/DataProvider.php', 'PHPUnit\\Metadata\\DataProvider' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/DataProvider.php',
@ -663,14 +657,16 @@ class ComposerStaticInitc00e5b601adae61bbbc3f6be4864ef55
'PHPUnit\\Metadata\\MetadataCollection' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/MetadataCollection.php', 'PHPUnit\\Metadata\\MetadataCollection' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/MetadataCollection.php',
'PHPUnit\\Metadata\\MetadataCollectionIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/MetadataCollectionIterator.php', 'PHPUnit\\Metadata\\MetadataCollectionIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/MetadataCollectionIterator.php',
'PHPUnit\\Metadata\\NoVersionRequirementException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Exception/NoVersionRequirementException.php', 'PHPUnit\\Metadata\\NoVersionRequirementException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Exception/NoVersionRequirementException.php',
'PHPUnit\\Metadata\\Parser\\AnnotationParser' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Parser/AnnotationParser.php',
'PHPUnit\\Metadata\\Parser\\AttributeParser' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Parser/AttributeParser.php', 'PHPUnit\\Metadata\\Parser\\AttributeParser' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Parser/AttributeParser.php',
'PHPUnit\\Metadata\\Parser\\CachingParser' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Parser/CachingParser.php', 'PHPUnit\\Metadata\\Parser\\CachingParser' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Parser/CachingParser.php',
'PHPUnit\\Metadata\\Parser\\Parser' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Parser/Parser.php', 'PHPUnit\\Metadata\\Parser\\Parser' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Parser/Parser.php',
'PHPUnit\\Metadata\\Parser\\ParserChain' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Parser/ParserChain.php',
'PHPUnit\\Metadata\\Parser\\Registry' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Parser/Registry.php', 'PHPUnit\\Metadata\\Parser\\Registry' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Parser/Registry.php',
'PHPUnit\\Metadata\\PostCondition' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/PostCondition.php', 'PHPUnit\\Metadata\\PostCondition' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/PostCondition.php',
'PHPUnit\\Metadata\\PreCondition' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/PreCondition.php', 'PHPUnit\\Metadata\\PreCondition' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/PreCondition.php',
'PHPUnit\\Metadata\\PreserveGlobalState' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/PreserveGlobalState.php', 'PHPUnit\\Metadata\\PreserveGlobalState' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/PreserveGlobalState.php',
'PHPUnit\\Metadata\\RequiresEnvironmentVariable' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/RequiresEnvironmentVariable.php', 'PHPUnit\\Metadata\\ReflectionException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Exception/ReflectionException.php',
'PHPUnit\\Metadata\\RequiresFunction' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/RequiresFunction.php', 'PHPUnit\\Metadata\\RequiresFunction' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/RequiresFunction.php',
'PHPUnit\\Metadata\\RequiresMethod' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/RequiresMethod.php', 'PHPUnit\\Metadata\\RequiresMethod' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/RequiresMethod.php',
'PHPUnit\\Metadata\\RequiresOperatingSystem' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/RequiresOperatingSystem.php', 'PHPUnit\\Metadata\\RequiresOperatingSystem' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/RequiresOperatingSystem.php',
@ -686,12 +682,11 @@ class ComposerStaticInitc00e5b601adae61bbbc3f6be4864ef55
'PHPUnit\\Metadata\\Test' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Test.php', 'PHPUnit\\Metadata\\Test' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Test.php',
'PHPUnit\\Metadata\\TestDox' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/TestDox.php', 'PHPUnit\\Metadata\\TestDox' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/TestDox.php',
'PHPUnit\\Metadata\\TestWith' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/TestWith.php', 'PHPUnit\\Metadata\\TestWith' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/TestWith.php',
'PHPUnit\\Metadata\\Uses' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Uses.php',
'PHPUnit\\Metadata\\UsesClass' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/UsesClass.php', 'PHPUnit\\Metadata\\UsesClass' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/UsesClass.php',
'PHPUnit\\Metadata\\UsesClassesThatExtendClass' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/UsesClassesThatExtendClass.php', 'PHPUnit\\Metadata\\UsesDefaultClass' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/UsesDefaultClass.php',
'PHPUnit\\Metadata\\UsesClassesThatImplementInterface' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/UsesClassesThatImplementInterface.php',
'PHPUnit\\Metadata\\UsesFunction' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/UsesFunction.php', 'PHPUnit\\Metadata\\UsesFunction' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/UsesFunction.php',
'PHPUnit\\Metadata\\UsesMethod' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/UsesMethod.php', 'PHPUnit\\Metadata\\UsesMethod' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/UsesMethod.php',
'PHPUnit\\Metadata\\UsesNamespace' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/UsesNamespace.php',
'PHPUnit\\Metadata\\UsesTrait' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/UsesTrait.php', 'PHPUnit\\Metadata\\UsesTrait' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/UsesTrait.php',
'PHPUnit\\Metadata\\Version\\ComparisonRequirement' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Version/ComparisonRequirement.php', 'PHPUnit\\Metadata\\Version\\ComparisonRequirement' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Version/ComparisonRequirement.php',
'PHPUnit\\Metadata\\Version\\ConstraintRequirement' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Version/ConstraintRequirement.php', 'PHPUnit\\Metadata\\Version\\ConstraintRequirement' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Version/ConstraintRequirement.php',
@ -989,6 +984,7 @@ class ComposerStaticInitc00e5b601adae61bbbc3f6be4864ef55
'PHPUnit\\TextUI\\XmlConfiguration\\UpdateSchemaLocation' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/UpdateSchemaLocation.php', 'PHPUnit\\TextUI\\XmlConfiguration\\UpdateSchemaLocation' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/UpdateSchemaLocation.php',
'PHPUnit\\TextUI\\XmlConfiguration\\ValidationResult' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Validator/ValidationResult.php', 'PHPUnit\\TextUI\\XmlConfiguration\\ValidationResult' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Validator/ValidationResult.php',
'PHPUnit\\TextUI\\XmlConfiguration\\Validator' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Validator/Validator.php', 'PHPUnit\\TextUI\\XmlConfiguration\\Validator' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Validator/Validator.php',
'PHPUnit\\Util\\Cloner' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Cloner.php',
'PHPUnit\\Util\\Color' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Color.php', 'PHPUnit\\Util\\Color' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Color.php',
'PHPUnit\\Util\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Exception/Exception.php', 'PHPUnit\\Util\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Exception/Exception.php',
'PHPUnit\\Util\\ExcludeList' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/ExcludeList.php', 'PHPUnit\\Util\\ExcludeList' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/ExcludeList.php',
@ -1087,270 +1083,6 @@ class ComposerStaticInitc00e5b601adae61bbbc3f6be4864ef55
'PharIo\\Version\\VersionConstraintParser' => __DIR__ . '/..' . '/phar-io/version/src/VersionConstraintParser.php', 'PharIo\\Version\\VersionConstraintParser' => __DIR__ . '/..' . '/phar-io/version/src/VersionConstraintParser.php',
'PharIo\\Version\\VersionConstraintValue' => __DIR__ . '/..' . '/phar-io/version/src/VersionConstraintValue.php', 'PharIo\\Version\\VersionConstraintValue' => __DIR__ . '/..' . '/phar-io/version/src/VersionConstraintValue.php',
'PharIo\\Version\\VersionNumber' => __DIR__ . '/..' . '/phar-io/version/src/VersionNumber.php', 'PharIo\\Version\\VersionNumber' => __DIR__ . '/..' . '/phar-io/version/src/VersionNumber.php',
'PhpParser\\Builder' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder.php',
'PhpParser\\BuilderFactory' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/BuilderFactory.php',
'PhpParser\\BuilderHelpers' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/BuilderHelpers.php',
'PhpParser\\Builder\\ClassConst' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/ClassConst.php',
'PhpParser\\Builder\\Class_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/Class_.php',
'PhpParser\\Builder\\Declaration' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/Declaration.php',
'PhpParser\\Builder\\EnumCase' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/EnumCase.php',
'PhpParser\\Builder\\Enum_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/Enum_.php',
'PhpParser\\Builder\\FunctionLike' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/FunctionLike.php',
'PhpParser\\Builder\\Function_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/Function_.php',
'PhpParser\\Builder\\Interface_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/Interface_.php',
'PhpParser\\Builder\\Method' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/Method.php',
'PhpParser\\Builder\\Namespace_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/Namespace_.php',
'PhpParser\\Builder\\Param' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/Param.php',
'PhpParser\\Builder\\Property' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/Property.php',
'PhpParser\\Builder\\TraitUse' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/TraitUse.php',
'PhpParser\\Builder\\TraitUseAdaptation' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/TraitUseAdaptation.php',
'PhpParser\\Builder\\Trait_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/Trait_.php',
'PhpParser\\Builder\\Use_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/Use_.php',
'PhpParser\\Comment' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Comment.php',
'PhpParser\\Comment\\Doc' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Comment/Doc.php',
'PhpParser\\ConstExprEvaluationException' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/ConstExprEvaluationException.php',
'PhpParser\\ConstExprEvaluator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/ConstExprEvaluator.php',
'PhpParser\\Error' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Error.php',
'PhpParser\\ErrorHandler' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/ErrorHandler.php',
'PhpParser\\ErrorHandler\\Collecting' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/ErrorHandler/Collecting.php',
'PhpParser\\ErrorHandler\\Throwing' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/ErrorHandler/Throwing.php',
'PhpParser\\Internal\\DiffElem' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Internal/DiffElem.php',
'PhpParser\\Internal\\Differ' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Internal/Differ.php',
'PhpParser\\Internal\\PrintableNewAnonClassNode' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Internal/PrintableNewAnonClassNode.php',
'PhpParser\\Internal\\TokenPolyfill' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Internal/TokenPolyfill.php',
'PhpParser\\Internal\\TokenStream' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Internal/TokenStream.php',
'PhpParser\\JsonDecoder' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/JsonDecoder.php',
'PhpParser\\Lexer' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer.php',
'PhpParser\\Lexer\\Emulative' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/Emulative.php',
'PhpParser\\Lexer\\TokenEmulator\\AsymmetricVisibilityTokenEmulator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/AsymmetricVisibilityTokenEmulator.php',
'PhpParser\\Lexer\\TokenEmulator\\AttributeEmulator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/AttributeEmulator.php',
'PhpParser\\Lexer\\TokenEmulator\\EnumTokenEmulator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/EnumTokenEmulator.php',
'PhpParser\\Lexer\\TokenEmulator\\ExplicitOctalEmulator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ExplicitOctalEmulator.php',
'PhpParser\\Lexer\\TokenEmulator\\KeywordEmulator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/KeywordEmulator.php',
'PhpParser\\Lexer\\TokenEmulator\\MatchTokenEmulator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/MatchTokenEmulator.php',
'PhpParser\\Lexer\\TokenEmulator\\NullsafeTokenEmulator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/NullsafeTokenEmulator.php',
'PhpParser\\Lexer\\TokenEmulator\\PropertyTokenEmulator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/PropertyTokenEmulator.php',
'PhpParser\\Lexer\\TokenEmulator\\ReadonlyFunctionTokenEmulator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReadonlyFunctionTokenEmulator.php',
'PhpParser\\Lexer\\TokenEmulator\\ReadonlyTokenEmulator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReadonlyTokenEmulator.php',
'PhpParser\\Lexer\\TokenEmulator\\ReverseEmulator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReverseEmulator.php',
'PhpParser\\Lexer\\TokenEmulator\\TokenEmulator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/TokenEmulator.php',
'PhpParser\\Modifiers' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Modifiers.php',
'PhpParser\\NameContext' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NameContext.php',
'PhpParser\\Node' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node.php',
'PhpParser\\NodeAbstract' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NodeAbstract.php',
'PhpParser\\NodeDumper' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NodeDumper.php',
'PhpParser\\NodeFinder' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NodeFinder.php',
'PhpParser\\NodeTraverser' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NodeTraverser.php',
'PhpParser\\NodeTraverserInterface' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NodeTraverserInterface.php',
'PhpParser\\NodeVisitor' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NodeVisitor.php',
'PhpParser\\NodeVisitorAbstract' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NodeVisitorAbstract.php',
'PhpParser\\NodeVisitor\\CloningVisitor' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NodeVisitor/CloningVisitor.php',
'PhpParser\\NodeVisitor\\CommentAnnotatingVisitor' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NodeVisitor/CommentAnnotatingVisitor.php',
'PhpParser\\NodeVisitor\\FindingVisitor' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NodeVisitor/FindingVisitor.php',
'PhpParser\\NodeVisitor\\FirstFindingVisitor' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NodeVisitor/FirstFindingVisitor.php',
'PhpParser\\NodeVisitor\\NameResolver' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NodeVisitor/NameResolver.php',
'PhpParser\\NodeVisitor\\NodeConnectingVisitor' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NodeVisitor/NodeConnectingVisitor.php',
'PhpParser\\NodeVisitor\\ParentConnectingVisitor' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NodeVisitor/ParentConnectingVisitor.php',
'PhpParser\\Node\\Arg' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Arg.php',
'PhpParser\\Node\\ArrayItem' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/ArrayItem.php',
'PhpParser\\Node\\Attribute' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Attribute.php',
'PhpParser\\Node\\AttributeGroup' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/AttributeGroup.php',
'PhpParser\\Node\\ClosureUse' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/ClosureUse.php',
'PhpParser\\Node\\ComplexType' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/ComplexType.php',
'PhpParser\\Node\\Const_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Const_.php',
'PhpParser\\Node\\DeclareItem' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/DeclareItem.php',
'PhpParser\\Node\\Expr' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr.php',
'PhpParser\\Node\\Expr\\ArrayDimFetch' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayDimFetch.php',
'PhpParser\\Node\\Expr\\ArrayItem' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayItem.php',
'PhpParser\\Node\\Expr\\Array_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Array_.php',
'PhpParser\\Node\\Expr\\ArrowFunction' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/ArrowFunction.php',
'PhpParser\\Node\\Expr\\Assign' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Assign.php',
'PhpParser\\Node\\Expr\\AssignOp' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp.php',
'PhpParser\\Node\\Expr\\AssignOp\\BitwiseAnd' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseAnd.php',
'PhpParser\\Node\\Expr\\AssignOp\\BitwiseOr' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseOr.php',
'PhpParser\\Node\\Expr\\AssignOp\\BitwiseXor' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseXor.php',
'PhpParser\\Node\\Expr\\AssignOp\\Coalesce' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Coalesce.php',
'PhpParser\\Node\\Expr\\AssignOp\\Concat' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Concat.php',
'PhpParser\\Node\\Expr\\AssignOp\\Div' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Div.php',
'PhpParser\\Node\\Expr\\AssignOp\\Minus' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Minus.php',
'PhpParser\\Node\\Expr\\AssignOp\\Mod' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Mod.php',
'PhpParser\\Node\\Expr\\AssignOp\\Mul' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Mul.php',
'PhpParser\\Node\\Expr\\AssignOp\\Plus' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Plus.php',
'PhpParser\\Node\\Expr\\AssignOp\\Pow' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Pow.php',
'PhpParser\\Node\\Expr\\AssignOp\\ShiftLeft' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/ShiftLeft.php',
'PhpParser\\Node\\Expr\\AssignOp\\ShiftRight' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/ShiftRight.php',
'PhpParser\\Node\\Expr\\AssignRef' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignRef.php',
'PhpParser\\Node\\Expr\\BinaryOp' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp.php',
'PhpParser\\Node\\Expr\\BinaryOp\\BitwiseAnd' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseAnd.php',
'PhpParser\\Node\\Expr\\BinaryOp\\BitwiseOr' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseOr.php',
'PhpParser\\Node\\Expr\\BinaryOp\\BitwiseXor' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseXor.php',
'PhpParser\\Node\\Expr\\BinaryOp\\BooleanAnd' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BooleanAnd.php',
'PhpParser\\Node\\Expr\\BinaryOp\\BooleanOr' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BooleanOr.php',
'PhpParser\\Node\\Expr\\BinaryOp\\Coalesce' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Coalesce.php',
'PhpParser\\Node\\Expr\\BinaryOp\\Concat' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Concat.php',
'PhpParser\\Node\\Expr\\BinaryOp\\Div' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Div.php',
'PhpParser\\Node\\Expr\\BinaryOp\\Equal' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Equal.php',
'PhpParser\\Node\\Expr\\BinaryOp\\Greater' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Greater.php',
'PhpParser\\Node\\Expr\\BinaryOp\\GreaterOrEqual' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/GreaterOrEqual.php',
'PhpParser\\Node\\Expr\\BinaryOp\\Identical' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Identical.php',
'PhpParser\\Node\\Expr\\BinaryOp\\LogicalAnd' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalAnd.php',
'PhpParser\\Node\\Expr\\BinaryOp\\LogicalOr' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalOr.php',
'PhpParser\\Node\\Expr\\BinaryOp\\LogicalXor' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalXor.php',
'PhpParser\\Node\\Expr\\BinaryOp\\Minus' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Minus.php',
'PhpParser\\Node\\Expr\\BinaryOp\\Mod' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Mod.php',
'PhpParser\\Node\\Expr\\BinaryOp\\Mul' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Mul.php',
'PhpParser\\Node\\Expr\\BinaryOp\\NotEqual' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/NotEqual.php',
'PhpParser\\Node\\Expr\\BinaryOp\\NotIdentical' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/NotIdentical.php',
'PhpParser\\Node\\Expr\\BinaryOp\\Plus' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Plus.php',
'PhpParser\\Node\\Expr\\BinaryOp\\Pow' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Pow.php',
'PhpParser\\Node\\Expr\\BinaryOp\\ShiftLeft' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/ShiftLeft.php',
'PhpParser\\Node\\Expr\\BinaryOp\\ShiftRight' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/ShiftRight.php',
'PhpParser\\Node\\Expr\\BinaryOp\\Smaller' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Smaller.php',
'PhpParser\\Node\\Expr\\BinaryOp\\SmallerOrEqual' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/SmallerOrEqual.php',
'PhpParser\\Node\\Expr\\BinaryOp\\Spaceship' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Spaceship.php',
'PhpParser\\Node\\Expr\\BitwiseNot' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BitwiseNot.php',
'PhpParser\\Node\\Expr\\BooleanNot' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BooleanNot.php',
'PhpParser\\Node\\Expr\\CallLike' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/CallLike.php',
'PhpParser\\Node\\Expr\\Cast' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast.php',
'PhpParser\\Node\\Expr\\Cast\\Array_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Array_.php',
'PhpParser\\Node\\Expr\\Cast\\Bool_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Bool_.php',
'PhpParser\\Node\\Expr\\Cast\\Double' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Double.php',
'PhpParser\\Node\\Expr\\Cast\\Int_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Int_.php',
'PhpParser\\Node\\Expr\\Cast\\Object_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Object_.php',
'PhpParser\\Node\\Expr\\Cast\\String_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/String_.php',
'PhpParser\\Node\\Expr\\Cast\\Unset_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Unset_.php',
'PhpParser\\Node\\Expr\\ClassConstFetch' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/ClassConstFetch.php',
'PhpParser\\Node\\Expr\\Clone_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Clone_.php',
'PhpParser\\Node\\Expr\\Closure' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Closure.php',
'PhpParser\\Node\\Expr\\ClosureUse' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/ClosureUse.php',
'PhpParser\\Node\\Expr\\ConstFetch' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/ConstFetch.php',
'PhpParser\\Node\\Expr\\Empty_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Empty_.php',
'PhpParser\\Node\\Expr\\Error' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Error.php',
'PhpParser\\Node\\Expr\\ErrorSuppress' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/ErrorSuppress.php',
'PhpParser\\Node\\Expr\\Eval_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Eval_.php',
'PhpParser\\Node\\Expr\\Exit_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Exit_.php',
'PhpParser\\Node\\Expr\\FuncCall' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/FuncCall.php',
'PhpParser\\Node\\Expr\\Include_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Include_.php',
'PhpParser\\Node\\Expr\\Instanceof_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Instanceof_.php',
'PhpParser\\Node\\Expr\\Isset_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Isset_.php',
'PhpParser\\Node\\Expr\\List_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/List_.php',
'PhpParser\\Node\\Expr\\Match_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Match_.php',
'PhpParser\\Node\\Expr\\MethodCall' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/MethodCall.php',
'PhpParser\\Node\\Expr\\New_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/New_.php',
'PhpParser\\Node\\Expr\\NullsafeMethodCall' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafeMethodCall.php',
'PhpParser\\Node\\Expr\\NullsafePropertyFetch' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafePropertyFetch.php',
'PhpParser\\Node\\Expr\\PostDec' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/PostDec.php',
'PhpParser\\Node\\Expr\\PostInc' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/PostInc.php',
'PhpParser\\Node\\Expr\\PreDec' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/PreDec.php',
'PhpParser\\Node\\Expr\\PreInc' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/PreInc.php',
'PhpParser\\Node\\Expr\\Print_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Print_.php',
'PhpParser\\Node\\Expr\\PropertyFetch' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/PropertyFetch.php',
'PhpParser\\Node\\Expr\\ShellExec' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/ShellExec.php',
'PhpParser\\Node\\Expr\\StaticCall' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/StaticCall.php',
'PhpParser\\Node\\Expr\\StaticPropertyFetch' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/StaticPropertyFetch.php',
'PhpParser\\Node\\Expr\\Ternary' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Ternary.php',
'PhpParser\\Node\\Expr\\Throw_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Throw_.php',
'PhpParser\\Node\\Expr\\UnaryMinus' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryMinus.php',
'PhpParser\\Node\\Expr\\UnaryPlus' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryPlus.php',
'PhpParser\\Node\\Expr\\Variable' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Variable.php',
'PhpParser\\Node\\Expr\\YieldFrom' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/YieldFrom.php',
'PhpParser\\Node\\Expr\\Yield_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Yield_.php',
'PhpParser\\Node\\FunctionLike' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/FunctionLike.php',
'PhpParser\\Node\\Identifier' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Identifier.php',
'PhpParser\\Node\\InterpolatedStringPart' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/InterpolatedStringPart.php',
'PhpParser\\Node\\IntersectionType' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/IntersectionType.php',
'PhpParser\\Node\\MatchArm' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/MatchArm.php',
'PhpParser\\Node\\Name' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Name.php',
'PhpParser\\Node\\Name\\FullyQualified' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Name/FullyQualified.php',
'PhpParser\\Node\\Name\\Relative' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Name/Relative.php',
'PhpParser\\Node\\NullableType' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/NullableType.php',
'PhpParser\\Node\\Param' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Param.php',
'PhpParser\\Node\\PropertyHook' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/PropertyHook.php',
'PhpParser\\Node\\PropertyItem' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/PropertyItem.php',
'PhpParser\\Node\\Scalar' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar.php',
'PhpParser\\Node\\Scalar\\DNumber' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/DNumber.php',
'PhpParser\\Node\\Scalar\\Encapsed' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/Encapsed.php',
'PhpParser\\Node\\Scalar\\EncapsedStringPart' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/EncapsedStringPart.php',
'PhpParser\\Node\\Scalar\\Float_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/Float_.php',
'PhpParser\\Node\\Scalar\\Int_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/Int_.php',
'PhpParser\\Node\\Scalar\\InterpolatedString' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/InterpolatedString.php',
'PhpParser\\Node\\Scalar\\LNumber' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/LNumber.php',
'PhpParser\\Node\\Scalar\\MagicConst' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst.php',
'PhpParser\\Node\\Scalar\\MagicConst\\Class_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Class_.php',
'PhpParser\\Node\\Scalar\\MagicConst\\Dir' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Dir.php',
'PhpParser\\Node\\Scalar\\MagicConst\\File' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/File.php',
'PhpParser\\Node\\Scalar\\MagicConst\\Function_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Function_.php',
'PhpParser\\Node\\Scalar\\MagicConst\\Line' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Line.php',
'PhpParser\\Node\\Scalar\\MagicConst\\Method' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Method.php',
'PhpParser\\Node\\Scalar\\MagicConst\\Namespace_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Namespace_.php',
'PhpParser\\Node\\Scalar\\MagicConst\\Property' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Property.php',
'PhpParser\\Node\\Scalar\\MagicConst\\Trait_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Trait_.php',
'PhpParser\\Node\\Scalar\\String_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/String_.php',
'PhpParser\\Node\\StaticVar' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/StaticVar.php',
'PhpParser\\Node\\Stmt' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt.php',
'PhpParser\\Node\\Stmt\\Block' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Block.php',
'PhpParser\\Node\\Stmt\\Break_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Break_.php',
'PhpParser\\Node\\Stmt\\Case_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Case_.php',
'PhpParser\\Node\\Stmt\\Catch_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Catch_.php',
'PhpParser\\Node\\Stmt\\ClassConst' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassConst.php',
'PhpParser\\Node\\Stmt\\ClassLike' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassLike.php',
'PhpParser\\Node\\Stmt\\ClassMethod' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassMethod.php',
'PhpParser\\Node\\Stmt\\Class_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Class_.php',
'PhpParser\\Node\\Stmt\\Const_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Const_.php',
'PhpParser\\Node\\Stmt\\Continue_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Continue_.php',
'PhpParser\\Node\\Stmt\\DeclareDeclare' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/DeclareDeclare.php',
'PhpParser\\Node\\Stmt\\Declare_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Declare_.php',
'PhpParser\\Node\\Stmt\\Do_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Do_.php',
'PhpParser\\Node\\Stmt\\Echo_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Echo_.php',
'PhpParser\\Node\\Stmt\\ElseIf_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/ElseIf_.php',
'PhpParser\\Node\\Stmt\\Else_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Else_.php',
'PhpParser\\Node\\Stmt\\EnumCase' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/EnumCase.php',
'PhpParser\\Node\\Stmt\\Enum_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Enum_.php',
'PhpParser\\Node\\Stmt\\Expression' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Expression.php',
'PhpParser\\Node\\Stmt\\Finally_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Finally_.php',
'PhpParser\\Node\\Stmt\\For_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/For_.php',
'PhpParser\\Node\\Stmt\\Foreach_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Foreach_.php',
'PhpParser\\Node\\Stmt\\Function_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Function_.php',
'PhpParser\\Node\\Stmt\\Global_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Global_.php',
'PhpParser\\Node\\Stmt\\Goto_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Goto_.php',
'PhpParser\\Node\\Stmt\\GroupUse' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/GroupUse.php',
'PhpParser\\Node\\Stmt\\HaltCompiler' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/HaltCompiler.php',
'PhpParser\\Node\\Stmt\\If_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/If_.php',
'PhpParser\\Node\\Stmt\\InlineHTML' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/InlineHTML.php',
'PhpParser\\Node\\Stmt\\Interface_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Interface_.php',
'PhpParser\\Node\\Stmt\\Label' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Label.php',
'PhpParser\\Node\\Stmt\\Namespace_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Namespace_.php',
'PhpParser\\Node\\Stmt\\Nop' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Nop.php',
'PhpParser\\Node\\Stmt\\Property' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Property.php',
'PhpParser\\Node\\Stmt\\PropertyProperty' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/PropertyProperty.php',
'PhpParser\\Node\\Stmt\\Return_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Return_.php',
'PhpParser\\Node\\Stmt\\StaticVar' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/StaticVar.php',
'PhpParser\\Node\\Stmt\\Static_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Static_.php',
'PhpParser\\Node\\Stmt\\Switch_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Switch_.php',
'PhpParser\\Node\\Stmt\\TraitUse' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUse.php',
'PhpParser\\Node\\Stmt\\TraitUseAdaptation' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation.php',
'PhpParser\\Node\\Stmt\\TraitUseAdaptation\\Alias' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation/Alias.php',
'PhpParser\\Node\\Stmt\\TraitUseAdaptation\\Precedence' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation/Precedence.php',
'PhpParser\\Node\\Stmt\\Trait_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Trait_.php',
'PhpParser\\Node\\Stmt\\TryCatch' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/TryCatch.php',
'PhpParser\\Node\\Stmt\\Unset_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Unset_.php',
'PhpParser\\Node\\Stmt\\UseUse' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/UseUse.php',
'PhpParser\\Node\\Stmt\\Use_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Use_.php',
'PhpParser\\Node\\Stmt\\While_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/While_.php',
'PhpParser\\Node\\UnionType' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/UnionType.php',
'PhpParser\\Node\\UseItem' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/UseItem.php',
'PhpParser\\Node\\VarLikeIdentifier' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/VarLikeIdentifier.php',
'PhpParser\\Node\\VariadicPlaceholder' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/VariadicPlaceholder.php',
'PhpParser\\Parser' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Parser.php',
'PhpParser\\ParserAbstract' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/ParserAbstract.php',
'PhpParser\\ParserFactory' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/ParserFactory.php',
'PhpParser\\Parser\\Php7' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Parser/Php7.php',
'PhpParser\\Parser\\Php8' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Parser/Php8.php',
'PhpParser\\PhpVersion' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/PhpVersion.php',
'PhpParser\\PrettyPrinter' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/PrettyPrinter.php',
'PhpParser\\PrettyPrinterAbstract' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/PrettyPrinterAbstract.php',
'PhpParser\\PrettyPrinter\\Standard' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/PrettyPrinter/Standard.php',
'PhpParser\\Token' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Token.php',
'SebastianBergmann\\CliParser\\AmbiguousOptionException' => __DIR__ . '/..' . '/sebastian/cli-parser/src/exceptions/AmbiguousOptionException.php', 'SebastianBergmann\\CliParser\\AmbiguousOptionException' => __DIR__ . '/..' . '/sebastian/cli-parser/src/exceptions/AmbiguousOptionException.php',
'SebastianBergmann\\CliParser\\Exception' => __DIR__ . '/..' . '/sebastian/cli-parser/src/exceptions/Exception.php', 'SebastianBergmann\\CliParser\\Exception' => __DIR__ . '/..' . '/sebastian/cli-parser/src/exceptions/Exception.php',
'SebastianBergmann\\CliParser\\OptionDoesNotAllowArgumentException' => __DIR__ . '/..' . '/sebastian/cli-parser/src/exceptions/OptionDoesNotAllowArgumentException.php', 'SebastianBergmann\\CliParser\\OptionDoesNotAllowArgumentException' => __DIR__ . '/..' . '/sebastian/cli-parser/src/exceptions/OptionDoesNotAllowArgumentException.php',
@ -1361,6 +1093,7 @@ class ComposerStaticInitc00e5b601adae61bbbc3f6be4864ef55
'SebastianBergmann\\CodeCoverage\\CodeCoverage' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage.php', 'SebastianBergmann\\CodeCoverage\\CodeCoverage' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage.php',
'SebastianBergmann\\CodeCoverage\\Data\\ProcessedCodeCoverageData' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Data/ProcessedCodeCoverageData.php', 'SebastianBergmann\\CodeCoverage\\Data\\ProcessedCodeCoverageData' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Data/ProcessedCodeCoverageData.php',
'SebastianBergmann\\CodeCoverage\\Data\\RawCodeCoverageData' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Data/RawCodeCoverageData.php', 'SebastianBergmann\\CodeCoverage\\Data\\RawCodeCoverageData' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Data/RawCodeCoverageData.php',
'SebastianBergmann\\CodeCoverage\\DeadCodeDetectionNotSupportedException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/DeadCodeDetectionNotSupportedException.php',
'SebastianBergmann\\CodeCoverage\\Driver\\Driver' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Driver/Driver.php', 'SebastianBergmann\\CodeCoverage\\Driver\\Driver' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Driver/Driver.php',
'SebastianBergmann\\CodeCoverage\\Driver\\PathExistsButIsNotDirectoryException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/PathExistsButIsNotDirectoryException.php', 'SebastianBergmann\\CodeCoverage\\Driver\\PathExistsButIsNotDirectoryException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/PathExistsButIsNotDirectoryException.php',
'SebastianBergmann\\CodeCoverage\\Driver\\PcovDriver' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Driver/PcovDriver.php', 'SebastianBergmann\\CodeCoverage\\Driver\\PcovDriver' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Driver/PcovDriver.php',
@ -1370,7 +1103,6 @@ class ComposerStaticInitc00e5b601adae61bbbc3f6be4864ef55
'SebastianBergmann\\CodeCoverage\\Driver\\XdebugDriver' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Driver/XdebugDriver.php', 'SebastianBergmann\\CodeCoverage\\Driver\\XdebugDriver' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Driver/XdebugDriver.php',
'SebastianBergmann\\CodeCoverage\\Driver\\XdebugNotAvailableException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/XdebugNotAvailableException.php', 'SebastianBergmann\\CodeCoverage\\Driver\\XdebugNotAvailableException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/XdebugNotAvailableException.php',
'SebastianBergmann\\CodeCoverage\\Driver\\XdebugNotEnabledException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/XdebugNotEnabledException.php', 'SebastianBergmann\\CodeCoverage\\Driver\\XdebugNotEnabledException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/XdebugNotEnabledException.php',
'SebastianBergmann\\CodeCoverage\\Driver\\XdebugVersionNotSupportedException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/XdebugVersionNotSupportedException.php',
'SebastianBergmann\\CodeCoverage\\Exception' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/Exception.php', 'SebastianBergmann\\CodeCoverage\\Exception' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/Exception.php',
'SebastianBergmann\\CodeCoverage\\FileCouldNotBeWrittenException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/FileCouldNotBeWrittenException.php', 'SebastianBergmann\\CodeCoverage\\FileCouldNotBeWrittenException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/FileCouldNotBeWrittenException.php',
'SebastianBergmann\\CodeCoverage\\Filter' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Filter.php', 'SebastianBergmann\\CodeCoverage\\Filter' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Filter.php',
@ -1415,36 +1147,12 @@ class ComposerStaticInitc00e5b601adae61bbbc3f6be4864ef55
'SebastianBergmann\\CodeCoverage\\StaticAnalysisCacheNotConfiguredException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/StaticAnalysisCacheNotConfiguredException.php', 'SebastianBergmann\\CodeCoverage\\StaticAnalysisCacheNotConfiguredException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/StaticAnalysisCacheNotConfiguredException.php',
'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\CacheWarmer' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/StaticAnalysis/CacheWarmer.php', 'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\CacheWarmer' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/StaticAnalysis/CacheWarmer.php',
'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\CachingFileAnalyser' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/StaticAnalysis/CachingFileAnalyser.php', 'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\CachingFileAnalyser' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/StaticAnalysis/CachingFileAnalyser.php',
'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\Class_' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/StaticAnalysis/Value/Class_.php',
'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\CodeUnitFindingVisitor' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/StaticAnalysis/CodeUnitFindingVisitor.php', 'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\CodeUnitFindingVisitor' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/StaticAnalysis/CodeUnitFindingVisitor.php',
'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\ExecutableLinesFindingVisitor' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/StaticAnalysis/ExecutableLinesFindingVisitor.php', 'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\ExecutableLinesFindingVisitor' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/StaticAnalysis/ExecutableLinesFindingVisitor.php',
'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\FileAnalyser' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/StaticAnalysis/FileAnalyser.php', 'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\FileAnalyser' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/StaticAnalysis/FileAnalyser.php',
'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\Function_' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/StaticAnalysis/Value/Function_.php',
'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\IgnoredLinesFindingVisitor' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/StaticAnalysis/IgnoredLinesFindingVisitor.php', 'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\IgnoredLinesFindingVisitor' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/StaticAnalysis/IgnoredLinesFindingVisitor.php',
'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\Interface_' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/StaticAnalysis/Value/Interface_.php',
'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\LinesOfCode' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/StaticAnalysis/Value/LinesOfCode.php',
'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\Method' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/StaticAnalysis/Value/Method.php',
'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\ParsingFileAnalyser' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/StaticAnalysis/ParsingFileAnalyser.php', 'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\ParsingFileAnalyser' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/StaticAnalysis/ParsingFileAnalyser.php',
'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\Trait_' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/StaticAnalysis/Value/Trait_.php',
'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\Visibility' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/StaticAnalysis/Value/Visibility.php',
'SebastianBergmann\\CodeCoverage\\TestIdMissingException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/TestIdMissingException.php', 'SebastianBergmann\\CodeCoverage\\TestIdMissingException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/TestIdMissingException.php',
'SebastianBergmann\\CodeCoverage\\Test\\Target\\Class_' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Target/Class_.php',
'SebastianBergmann\\CodeCoverage\\Test\\Target\\ClassesThatExtendClass' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Target/ClassesThatExtendClass.php',
'SebastianBergmann\\CodeCoverage\\Test\\Target\\ClassesThatImplementInterface' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Target/ClassesThatImplementInterface.php',
'SebastianBergmann\\CodeCoverage\\Test\\Target\\Function_' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Target/Function_.php',
'SebastianBergmann\\CodeCoverage\\Test\\Target\\InvalidCodeCoverageTargetException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/InvalidCodeCoverageTargetException.php',
'SebastianBergmann\\CodeCoverage\\Test\\Target\\MapBuilder' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Target/MapBuilder.php',
'SebastianBergmann\\CodeCoverage\\Test\\Target\\Mapper' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Target/Mapper.php',
'SebastianBergmann\\CodeCoverage\\Test\\Target\\Method' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Target/Method.php',
'SebastianBergmann\\CodeCoverage\\Test\\Target\\Namespace_' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Target/Namespace_.php',
'SebastianBergmann\\CodeCoverage\\Test\\Target\\Target' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Target/Target.php',
'SebastianBergmann\\CodeCoverage\\Test\\Target\\TargetCollection' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Target/TargetCollection.php',
'SebastianBergmann\\CodeCoverage\\Test\\Target\\TargetCollectionIterator' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Target/TargetCollectionIterator.php',
'SebastianBergmann\\CodeCoverage\\Test\\Target\\TargetCollectionValidator' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Target/TargetCollectionValidator.php',
'SebastianBergmann\\CodeCoverage\\Test\\Target\\Trait_' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Target/Trait_.php',
'SebastianBergmann\\CodeCoverage\\Test\\Target\\ValidationFailure' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Target/ValidationFailure.php',
'SebastianBergmann\\CodeCoverage\\Test\\Target\\ValidationResult' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Target/ValidationResult.php',
'SebastianBergmann\\CodeCoverage\\Test\\Target\\ValidationSuccess' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Target/ValidationSuccess.php',
'SebastianBergmann\\CodeCoverage\\Test\\TestSize\\Known' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/TestSize/Known.php', 'SebastianBergmann\\CodeCoverage\\Test\\TestSize\\Known' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/TestSize/Known.php',
'SebastianBergmann\\CodeCoverage\\Test\\TestSize\\Large' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/TestSize/Large.php', 'SebastianBergmann\\CodeCoverage\\Test\\TestSize\\Large' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/TestSize/Large.php',
'SebastianBergmann\\CodeCoverage\\Test\\TestSize\\Medium' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/TestSize/Medium.php', 'SebastianBergmann\\CodeCoverage\\Test\\TestSize\\Medium' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/TestSize/Medium.php',
@ -1462,6 +1170,23 @@ class ComposerStaticInitc00e5b601adae61bbbc3f6be4864ef55
'SebastianBergmann\\CodeCoverage\\Util\\Percentage' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Util/Percentage.php', 'SebastianBergmann\\CodeCoverage\\Util\\Percentage' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Util/Percentage.php',
'SebastianBergmann\\CodeCoverage\\Version' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Version.php', 'SebastianBergmann\\CodeCoverage\\Version' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Version.php',
'SebastianBergmann\\CodeCoverage\\XmlException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/XmlException.php', 'SebastianBergmann\\CodeCoverage\\XmlException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/XmlException.php',
'SebastianBergmann\\CodeUnitReverseLookup\\Wizard' => __DIR__ . '/..' . '/sebastian/code-unit-reverse-lookup/src/Wizard.php',
'SebastianBergmann\\CodeUnit\\ClassMethodUnit' => __DIR__ . '/..' . '/sebastian/code-unit/src/ClassMethodUnit.php',
'SebastianBergmann\\CodeUnit\\ClassUnit' => __DIR__ . '/..' . '/sebastian/code-unit/src/ClassUnit.php',
'SebastianBergmann\\CodeUnit\\CodeUnit' => __DIR__ . '/..' . '/sebastian/code-unit/src/CodeUnit.php',
'SebastianBergmann\\CodeUnit\\CodeUnitCollection' => __DIR__ . '/..' . '/sebastian/code-unit/src/CodeUnitCollection.php',
'SebastianBergmann\\CodeUnit\\CodeUnitCollectionIterator' => __DIR__ . '/..' . '/sebastian/code-unit/src/CodeUnitCollectionIterator.php',
'SebastianBergmann\\CodeUnit\\Exception' => __DIR__ . '/..' . '/sebastian/code-unit/src/exceptions/Exception.php',
'SebastianBergmann\\CodeUnit\\FileUnit' => __DIR__ . '/..' . '/sebastian/code-unit/src/FileUnit.php',
'SebastianBergmann\\CodeUnit\\FunctionUnit' => __DIR__ . '/..' . '/sebastian/code-unit/src/FunctionUnit.php',
'SebastianBergmann\\CodeUnit\\InterfaceMethodUnit' => __DIR__ . '/..' . '/sebastian/code-unit/src/InterfaceMethodUnit.php',
'SebastianBergmann\\CodeUnit\\InterfaceUnit' => __DIR__ . '/..' . '/sebastian/code-unit/src/InterfaceUnit.php',
'SebastianBergmann\\CodeUnit\\InvalidCodeUnitException' => __DIR__ . '/..' . '/sebastian/code-unit/src/exceptions/InvalidCodeUnitException.php',
'SebastianBergmann\\CodeUnit\\Mapper' => __DIR__ . '/..' . '/sebastian/code-unit/src/Mapper.php',
'SebastianBergmann\\CodeUnit\\NoTraitException' => __DIR__ . '/..' . '/sebastian/code-unit/src/exceptions/NoTraitException.php',
'SebastianBergmann\\CodeUnit\\ReflectionException' => __DIR__ . '/..' . '/sebastian/code-unit/src/exceptions/ReflectionException.php',
'SebastianBergmann\\CodeUnit\\TraitMethodUnit' => __DIR__ . '/..' . '/sebastian/code-unit/src/TraitMethodUnit.php',
'SebastianBergmann\\CodeUnit\\TraitUnit' => __DIR__ . '/..' . '/sebastian/code-unit/src/TraitUnit.php',
'SebastianBergmann\\Comparator\\ArrayComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/ArrayComparator.php', 'SebastianBergmann\\Comparator\\ArrayComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/ArrayComparator.php',
'SebastianBergmann\\Comparator\\Comparator' => __DIR__ . '/..' . '/sebastian/comparator/src/Comparator.php', 'SebastianBergmann\\Comparator\\Comparator' => __DIR__ . '/..' . '/sebastian/comparator/src/Comparator.php',
'SebastianBergmann\\Comparator\\ComparisonFailure' => __DIR__ . '/..' . '/sebastian/comparator/src/ComparisonFailure.php', 'SebastianBergmann\\Comparator\\ComparisonFailure' => __DIR__ . '/..' . '/sebastian/comparator/src/ComparisonFailure.php',
@ -1526,6 +1251,7 @@ class ComposerStaticInitc00e5b601adae61bbbc3f6be4864ef55
'SebastianBergmann\\LinesOfCode\\IllogicalValuesException' => __DIR__ . '/..' . '/sebastian/lines-of-code/src/Exception/IllogicalValuesException.php', 'SebastianBergmann\\LinesOfCode\\IllogicalValuesException' => __DIR__ . '/..' . '/sebastian/lines-of-code/src/Exception/IllogicalValuesException.php',
'SebastianBergmann\\LinesOfCode\\LineCountingVisitor' => __DIR__ . '/..' . '/sebastian/lines-of-code/src/LineCountingVisitor.php', 'SebastianBergmann\\LinesOfCode\\LineCountingVisitor' => __DIR__ . '/..' . '/sebastian/lines-of-code/src/LineCountingVisitor.php',
'SebastianBergmann\\LinesOfCode\\LinesOfCode' => __DIR__ . '/..' . '/sebastian/lines-of-code/src/LinesOfCode.php', 'SebastianBergmann\\LinesOfCode\\LinesOfCode' => __DIR__ . '/..' . '/sebastian/lines-of-code/src/LinesOfCode.php',
'SebastianBergmann\\LinesOfCode\\NegativeValueException' => __DIR__ . '/..' . '/sebastian/lines-of-code/src/Exception/NegativeValueException.php',
'SebastianBergmann\\LinesOfCode\\RuntimeException' => __DIR__ . '/..' . '/sebastian/lines-of-code/src/Exception/RuntimeException.php', 'SebastianBergmann\\LinesOfCode\\RuntimeException' => __DIR__ . '/..' . '/sebastian/lines-of-code/src/Exception/RuntimeException.php',
'SebastianBergmann\\ObjectEnumerator\\Enumerator' => __DIR__ . '/..' . '/sebastian/object-enumerator/src/Enumerator.php', 'SebastianBergmann\\ObjectEnumerator\\Enumerator' => __DIR__ . '/..' . '/sebastian/object-enumerator/src/Enumerator.php',
'SebastianBergmann\\ObjectReflector\\ObjectReflector' => __DIR__ . '/..' . '/sebastian/object-reflector/src/ObjectReflector.php', 'SebastianBergmann\\ObjectReflector\\ObjectReflector' => __DIR__ . '/..' . '/sebastian/object-reflector/src/ObjectReflector.php',
@ -1570,16 +1296,6 @@ class ComposerStaticInitc00e5b601adae61bbbc3f6be4864ef55
'TheSeer\\Tokenizer\\TokenCollectionException' => __DIR__ . '/..' . '/theseer/tokenizer/src/TokenCollectionException.php', 'TheSeer\\Tokenizer\\TokenCollectionException' => __DIR__ . '/..' . '/theseer/tokenizer/src/TokenCollectionException.php',
'TheSeer\\Tokenizer\\Tokenizer' => __DIR__ . '/..' . '/theseer/tokenizer/src/Tokenizer.php', 'TheSeer\\Tokenizer\\Tokenizer' => __DIR__ . '/..' . '/theseer/tokenizer/src/Tokenizer.php',
'TheSeer\\Tokenizer\\XMLSerializer' => __DIR__ . '/..' . '/theseer/tokenizer/src/XMLSerializer.php', 'TheSeer\\Tokenizer\\XMLSerializer' => __DIR__ . '/..' . '/theseer/tokenizer/src/XMLSerializer.php',
'goodboyalex\\php_components_pack\\classes\\ActionState' => __DIR__ . '/../..' . '/sources/classes/ActionState.php',
'goodboyalex\\php_components_pack\\classes\\ClassMapper' => __DIR__ . '/../..' . '/sources/classes/ClassMapper.php',
'goodboyalex\\php_components_pack\\enums\\MessageType' => __DIR__ . '/../..' . '/sources/enums/MessageType.php',
'goodboyalex\\php_components_pack\\extensions\\ArrayExtension' => __DIR__ . '/../..' . '/sources/extensions/ArrayExtension.php',
'goodboyalex\\php_components_pack\\extensions\\GUIDExtension' => __DIR__ . '/../..' . '/sources/extensions/GUIDExtension.php',
'goodboyalex\\php_components_pack\\extensions\\StringExtension' => __DIR__ . '/../..' . '/sources/extensions/StringExtension.php',
'goodboyalex\\php_components_pack\\interfaces\\ISerializable' => __DIR__ . '/../..' . '/sources/interfaces/ISerializable.php',
'goodboyalex\\php_components_pack\\models\\ActionStateMessageModel' => __DIR__ . '/../..' . '/sources/models/ActionStateMessageModel.php',
'goodboyalex\\php_components_pack\\tests\\GUIDExtensionTest' => __DIR__ . '/../..' . '/tests/GUIDExtensionTest.php',
'goodboyalex\\php_components_pack\\traits\\EnumExtensionsTrait' => __DIR__ . '/../..' . '/sources/traits/EnumExtensionsTrait.php',
'staabm\\SideEffectsDetector\\SideEffect' => __DIR__ . '/..' . '/staabm/side-effects-detector/lib/SideEffect.php', 'staabm\\SideEffectsDetector\\SideEffect' => __DIR__ . '/..' . '/staabm/side-effects-detector/lib/SideEffect.php',
'staabm\\SideEffectsDetector\\SideEffectsDetector' => __DIR__ . '/..' . '/staabm/side-effects-detector/lib/SideEffectsDetector.php', 'staabm\\SideEffectsDetector\\SideEffectsDetector' => __DIR__ . '/..' . '/staabm/side-effects-detector/lib/SideEffectsDetector.php',
); );

File diff suppressed because it is too large Load Diff

View File

@ -3,7 +3,7 @@
'name' => 'goodboyalex/php_components_pack', 'name' => 'goodboyalex/php_components_pack',
'pretty_version' => 'dev-master', 'pretty_version' => 'dev-master',
'version' => 'dev-master', 'version' => 'dev-master',
'reference' => 'f1a79d66ec29418af66448e6eca584eddfe31d4d', 'reference' => '4bcb4c60dd4219bbb7ff6c9887884541010bcdbc',
'type' => 'library', 'type' => 'library',
'install_path' => __DIR__ . '/../../', 'install_path' => __DIR__ . '/../../',
'aliases' => array(), 'aliases' => array(),
@ -13,16 +13,16 @@
'goodboyalex/php_components_pack' => array( 'goodboyalex/php_components_pack' => array(
'pretty_version' => 'dev-master', 'pretty_version' => 'dev-master',
'version' => 'dev-master', 'version' => 'dev-master',
'reference' => 'f1a79d66ec29418af66448e6eca584eddfe31d4d', 'reference' => '4bcb4c60dd4219bbb7ff6c9887884541010bcdbc',
'type' => 'library', 'type' => 'library',
'install_path' => __DIR__ . '/../../', 'install_path' => __DIR__ . '/../../',
'aliases' => array(), 'aliases' => array(),
'dev_requirement' => false, 'dev_requirement' => false,
), ),
'myclabs/deep-copy' => array( 'myclabs/deep-copy' => array(
'pretty_version' => '1.x-dev', 'pretty_version' => '1.12.1',
'version' => '1.9999999.9999999.9999999-dev', 'version' => '1.12.1.0',
'reference' => '4764e040f8743e92b86c36f488f32d0265dd1dae', 'reference' => '123267b2c49fbf30d78a7b2d333f6be754b94845',
'type' => 'library', 'type' => 'library',
'install_path' => __DIR__ . '/../myclabs/deep-copy', 'install_path' => __DIR__ . '/../myclabs/deep-copy',
'aliases' => array(), 'aliases' => array(),
@ -38,14 +38,12 @@
'dev_requirement' => true, 'dev_requirement' => true,
), ),
'phar-io/manifest' => array( 'phar-io/manifest' => array(
'pretty_version' => 'dev-master', 'pretty_version' => '2.0.4',
'version' => 'dev-master', 'version' => '2.0.4.0',
'reference' => '54750ef60c58e43759730615a392c31c80e23176', 'reference' => '54750ef60c58e43759730615a392c31c80e23176',
'type' => 'library', 'type' => 'library',
'install_path' => __DIR__ . '/../phar-io/manifest', 'install_path' => __DIR__ . '/../phar-io/manifest',
'aliases' => array( 'aliases' => array(),
0 => '2.0.x-dev',
),
'dev_requirement' => true, 'dev_requirement' => true,
), ),
'phar-io/version' => array( 'phar-io/version' => array(
@ -58,212 +56,192 @@
'dev_requirement' => true, 'dev_requirement' => true,
), ),
'phpunit/php-code-coverage' => array( 'phpunit/php-code-coverage' => array(
'pretty_version' => 'dev-main', 'pretty_version' => '11.0.8',
'version' => 'dev-main', 'version' => '11.0.8.0',
'reference' => '30b614244b02907cf0b2edc559fd5e24bd05ea57', 'reference' => '418c59fd080954f8c4aa5631d9502ecda2387118',
'type' => 'library', 'type' => 'library',
'install_path' => __DIR__ . '/../phpunit/php-code-coverage', 'install_path' => __DIR__ . '/../phpunit/php-code-coverage',
'aliases' => array( 'aliases' => array(),
0 => '12.0.x-dev',
),
'dev_requirement' => true, 'dev_requirement' => true,
), ),
'phpunit/php-file-iterator' => array( 'phpunit/php-file-iterator' => array(
'pretty_version' => 'dev-main', 'pretty_version' => '5.1.0',
'version' => 'dev-main', 'version' => '5.1.0.0',
'reference' => 'a1339a60b2206324e440c4a3806bbd873fda0860', 'reference' => '118cfaaa8bc5aef3287bf315b6060b1174754af6',
'type' => 'library', 'type' => 'library',
'install_path' => __DIR__ . '/../phpunit/php-file-iterator', 'install_path' => __DIR__ . '/../phpunit/php-file-iterator',
'aliases' => array( 'aliases' => array(),
0 => '6.0.x-dev',
),
'dev_requirement' => true, 'dev_requirement' => true,
), ),
'phpunit/php-invoker' => array( 'phpunit/php-invoker' => array(
'pretty_version' => 'dev-main', 'pretty_version' => '5.0.1',
'version' => 'dev-main', 'version' => '5.0.1.0',
'reference' => 'a79e641e661a20d3b8c264b0b3b9eb0d98f98506', 'reference' => 'c1ca3814734c07492b3d4c5f794f4b0995333da2',
'type' => 'library', 'type' => 'library',
'install_path' => __DIR__ . '/../phpunit/php-invoker', 'install_path' => __DIR__ . '/../phpunit/php-invoker',
'aliases' => array( 'aliases' => array(),
0 => '6.0.x-dev',
),
'dev_requirement' => true, 'dev_requirement' => true,
), ),
'phpunit/php-text-template' => array( 'phpunit/php-text-template' => array(
'pretty_version' => 'dev-main', 'pretty_version' => '4.0.1',
'version' => 'dev-main', 'version' => '4.0.1.0',
'reference' => '0199874fd3f2ae19aa9813bdfcb68e67671eee64', 'reference' => '3e0404dc6b300e6bf56415467ebcb3fe4f33e964',
'type' => 'library', 'type' => 'library',
'install_path' => __DIR__ . '/../phpunit/php-text-template', 'install_path' => __DIR__ . '/../phpunit/php-text-template',
'aliases' => array( 'aliases' => array(),
0 => '5.0.x-dev',
),
'dev_requirement' => true, 'dev_requirement' => true,
), ),
'phpunit/php-timer' => array( 'phpunit/php-timer' => array(
'pretty_version' => 'dev-main', 'pretty_version' => '7.0.1',
'version' => 'dev-main', 'version' => '7.0.1.0',
'reference' => 'aa0f95babbd87f096f1c20364204f195dd4b4608', 'reference' => '3b415def83fbcb41f991d9ebf16ae4ad8b7837b3',
'type' => 'library', 'type' => 'library',
'install_path' => __DIR__ . '/../phpunit/php-timer', 'install_path' => __DIR__ . '/../phpunit/php-timer',
'aliases' => array( 'aliases' => array(),
0 => '8.0.x-dev',
),
'dev_requirement' => true, 'dev_requirement' => true,
), ),
'phpunit/phpunit' => array( 'phpunit/phpunit' => array(
'pretty_version' => 'dev-main', 'pretty_version' => '11.5.6',
'version' => 'dev-main', 'version' => '11.5.6.0',
'reference' => '9f2ebaf18f7741a5ee587f80a42632edaa42d424', 'reference' => '3c3ae14c90f244cdda95028c3e469028e8d1c02c',
'type' => 'library', 'type' => 'library',
'install_path' => __DIR__ . '/../phpunit/phpunit', 'install_path' => __DIR__ . '/../phpunit/phpunit',
'aliases' => array( 'aliases' => array(),
0 => '12.0.x-dev',
),
'dev_requirement' => true, 'dev_requirement' => true,
), ),
'sebastian/cli-parser' => array( 'sebastian/cli-parser' => array(
'pretty_version' => 'dev-main', 'pretty_version' => '3.0.2',
'version' => 'dev-main', 'version' => '3.0.2.0',
'reference' => '7f79d38ab02a0cb4089f31207ca11b74f49c7848', 'reference' => '15c5dd40dc4f38794d383bb95465193f5e0ae180',
'type' => 'library', 'type' => 'library',
'install_path' => __DIR__ . '/../sebastian/cli-parser', 'install_path' => __DIR__ . '/../sebastian/cli-parser',
'aliases' => array( 'aliases' => array(),
0 => '4.0.x-dev', 'dev_requirement' => true,
), ),
'sebastian/code-unit' => array(
'pretty_version' => '3.0.2',
'version' => '3.0.2.0',
'reference' => 'ee88b0cdbe74cf8dd3b54940ff17643c0d6543ca',
'type' => 'library',
'install_path' => __DIR__ . '/../sebastian/code-unit',
'aliases' => array(),
'dev_requirement' => true,
),
'sebastian/code-unit-reverse-lookup' => array(
'pretty_version' => '4.0.1',
'version' => '4.0.1.0',
'reference' => '183a9b2632194febd219bb9246eee421dad8d45e',
'type' => 'library',
'install_path' => __DIR__ . '/../sebastian/code-unit-reverse-lookup',
'aliases' => array(),
'dev_requirement' => true, 'dev_requirement' => true,
), ),
'sebastian/comparator' => array( 'sebastian/comparator' => array(
'pretty_version' => 'dev-main', 'pretty_version' => '6.3.0',
'version' => 'dev-main', 'version' => '6.3.0.0',
'reference' => '07f683f544931bc816c47faf894e387f2216a1e9', 'reference' => 'd4e47a769525c4dd38cea90e5dcd435ddbbc7115',
'type' => 'library', 'type' => 'library',
'install_path' => __DIR__ . '/../sebastian/comparator', 'install_path' => __DIR__ . '/../sebastian/comparator',
'aliases' => array( 'aliases' => array(),
0 => '7.0.x-dev',
),
'dev_requirement' => true, 'dev_requirement' => true,
), ),
'sebastian/complexity' => array( 'sebastian/complexity' => array(
'pretty_version' => 'dev-main', 'pretty_version' => '4.0.1',
'version' => 'dev-main', 'version' => '4.0.1.0',
'reference' => 'eec688b04904c5ecfa3b94f59bc60485209805a9', 'reference' => 'ee41d384ab1906c68852636b6de493846e13e5a0',
'type' => 'library', 'type' => 'library',
'install_path' => __DIR__ . '/../sebastian/complexity', 'install_path' => __DIR__ . '/../sebastian/complexity',
'aliases' => array( 'aliases' => array(),
0 => '5.0.x-dev',
),
'dev_requirement' => true, 'dev_requirement' => true,
), ),
'sebastian/diff' => array( 'sebastian/diff' => array(
'pretty_version' => 'dev-main', 'pretty_version' => '6.0.2',
'version' => 'dev-main', 'version' => '6.0.2.0',
'reference' => '87a9594e6994ba8ee9010836903305a64c895083', 'reference' => 'b4ccd857127db5d41a5b676f24b51371d76d8544',
'type' => 'library', 'type' => 'library',
'install_path' => __DIR__ . '/../sebastian/diff', 'install_path' => __DIR__ . '/../sebastian/diff',
'aliases' => array( 'aliases' => array(),
0 => '7.0.x-dev',
),
'dev_requirement' => true, 'dev_requirement' => true,
), ),
'sebastian/environment' => array( 'sebastian/environment' => array(
'pretty_version' => 'dev-main', 'pretty_version' => '7.2.0',
'version' => 'dev-main', 'version' => '7.2.0.0',
'reference' => '92b1a897b49e191a8fbca823d75bc0e157ff7cdb', 'reference' => '855f3ae0ab316bbafe1ba4e16e9f3c078d24a0c5',
'type' => 'library', 'type' => 'library',
'install_path' => __DIR__ . '/../sebastian/environment', 'install_path' => __DIR__ . '/../sebastian/environment',
'aliases' => array( 'aliases' => array(),
0 => '8.0.x-dev',
),
'dev_requirement' => true, 'dev_requirement' => true,
), ),
'sebastian/exporter' => array( 'sebastian/exporter' => array(
'pretty_version' => 'dev-main', 'pretty_version' => '6.3.0',
'version' => 'dev-main', 'version' => '6.3.0.0',
'reference' => '17e38c7a602c690c6f097b6aeaf47d0771ace9ca', 'reference' => '3473f61172093b2da7de1fb5782e1f24cc036dc3',
'type' => 'library', 'type' => 'library',
'install_path' => __DIR__ . '/../sebastian/exporter', 'install_path' => __DIR__ . '/../sebastian/exporter',
'aliases' => array( 'aliases' => array(),
0 => '7.0.x-dev',
),
'dev_requirement' => true, 'dev_requirement' => true,
), ),
'sebastian/global-state' => array( 'sebastian/global-state' => array(
'pretty_version' => 'dev-main', 'pretty_version' => '7.0.2',
'version' => 'dev-main', 'version' => '7.0.2.0',
'reference' => '8a089e5a2a118a6725b603a47be1d1a9da1b9a68', 'reference' => '3be331570a721f9a4b5917f4209773de17f747d7',
'type' => 'library', 'type' => 'library',
'install_path' => __DIR__ . '/../sebastian/global-state', 'install_path' => __DIR__ . '/../sebastian/global-state',
'aliases' => array( 'aliases' => array(),
0 => '8.0.x-dev',
),
'dev_requirement' => true, 'dev_requirement' => true,
), ),
'sebastian/lines-of-code' => array( 'sebastian/lines-of-code' => array(
'pretty_version' => 'dev-main', 'pretty_version' => '3.0.1',
'version' => 'dev-main', 'version' => '3.0.1.0',
'reference' => 'fe8070ab1160c447839048ab240c07c448caa2b2', 'reference' => 'd36ad0d782e5756913e42ad87cb2890f4ffe467a',
'type' => 'library', 'type' => 'library',
'install_path' => __DIR__ . '/../sebastian/lines-of-code', 'install_path' => __DIR__ . '/../sebastian/lines-of-code',
'aliases' => array( 'aliases' => array(),
0 => '4.0.x-dev',
),
'dev_requirement' => true, 'dev_requirement' => true,
), ),
'sebastian/object-enumerator' => array( 'sebastian/object-enumerator' => array(
'pretty_version' => 'dev-main', 'pretty_version' => '6.0.1',
'version' => 'dev-main', 'version' => '6.0.1.0',
'reference' => '250d806a14baca8c4b37823426277dbcb8d4440d', 'reference' => 'f5b498e631a74204185071eb41f33f38d64608aa',
'type' => 'library', 'type' => 'library',
'install_path' => __DIR__ . '/../sebastian/object-enumerator', 'install_path' => __DIR__ . '/../sebastian/object-enumerator',
'aliases' => array( 'aliases' => array(),
0 => '7.0.x-dev',
),
'dev_requirement' => true, 'dev_requirement' => true,
), ),
'sebastian/object-reflector' => array( 'sebastian/object-reflector' => array(
'pretty_version' => 'dev-main', 'pretty_version' => '4.0.1',
'version' => 'dev-main', 'version' => '4.0.1.0',
'reference' => '7dddd66b56ba05cb474de46b2b623e92b42bff3a', 'reference' => '6e1a43b411b2ad34146dee7524cb13a068bb35f9',
'type' => 'library', 'type' => 'library',
'install_path' => __DIR__ . '/../sebastian/object-reflector', 'install_path' => __DIR__ . '/../sebastian/object-reflector',
'aliases' => array( 'aliases' => array(),
0 => '5.0.x-dev',
),
'dev_requirement' => true, 'dev_requirement' => true,
), ),
'sebastian/recursion-context' => array( 'sebastian/recursion-context' => array(
'pretty_version' => 'dev-main', 'pretty_version' => '6.0.2',
'version' => 'dev-main', 'version' => '6.0.2.0',
'reference' => 'c9442e27dc9965ad453397725830d8ecb5497410', 'reference' => '694d156164372abbd149a4b85ccda2e4670c0e16',
'type' => 'library', 'type' => 'library',
'install_path' => __DIR__ . '/../sebastian/recursion-context', 'install_path' => __DIR__ . '/../sebastian/recursion-context',
'aliases' => array( 'aliases' => array(),
0 => '7.0.x-dev',
),
'dev_requirement' => true, 'dev_requirement' => true,
), ),
'sebastian/type' => array( 'sebastian/type' => array(
'pretty_version' => 'dev-main', 'pretty_version' => '5.1.0',
'version' => 'dev-main', 'version' => '5.1.0.0',
'reference' => 'b07de32ccc63961cfcf87c4531816388dbaf264f', 'reference' => '461b9c5da241511a2a0e8f240814fb23ce5c0aac',
'type' => 'library', 'type' => 'library',
'install_path' => __DIR__ . '/../sebastian/type', 'install_path' => __DIR__ . '/../sebastian/type',
'aliases' => array( 'aliases' => array(),
0 => '6.0.x-dev',
),
'dev_requirement' => true, 'dev_requirement' => true,
), ),
'sebastian/version' => array( 'sebastian/version' => array(
'pretty_version' => 'dev-main', 'pretty_version' => '5.0.2',
'version' => 'dev-main', 'version' => '5.0.2.0',
'reference' => '3e8786f0e004140c3be066577af51e7ea0446e54', 'reference' => 'c687e3387b99f5b03b6caa64c74b63e2936ff874',
'type' => 'library', 'type' => 'library',
'install_path' => __DIR__ . '/../sebastian/version', 'install_path' => __DIR__ . '/../sebastian/version',
'aliases' => array( 'aliases' => array(),
0 => '6.0.x-dev',
),
'dev_requirement' => true, 'dev_requirement' => true,
), ),
'staabm/side-effects-detector' => array( 'staabm/side-effects-detector' => array(

View File

@ -0,0 +1,74 @@
# ChangeLog
All notable changes are documented in this file using the [Keep a CHANGELOG](http://keepachangelog.com/) principles.
## [11.0.8] - 2024-12-11
### Changed
* [#1054](https://github.com/sebastianbergmann/php-code-coverage/pull/1054): Use click event for toggling "tests covering this line" popover in HTML report
## [11.0.7] - 2024-10-09
### Changed
* [#1037](https://github.com/sebastianbergmann/php-code-coverage/pull/1037): Upgrade Bootstrap to version 5.3.3 for HTML report
* [#1046](https://github.com/sebastianbergmann/php-code-coverage/pull/1046): CSS fixes for HTML report
### Deprecated
* The `SebastianBergmann\CodeCoverage\Filter::includeUncoveredFiles()`, `SebastianBergmann\CodeCoverage\Filter::excludeUncoveredFiles()`, and `SebastianBergmann\CodeCoverage\Filter::excludeFile()` methods have been deprecated
## [11.0.6] - 2024-08-22
### Changed
* Updated dependencies (so that users that install using Composer's `--prefer-lowest` CLI option also get recent versions)
## [11.0.5] - 2024-07-03
### Changed
* This project now uses PHPStan instead of Psalm for static analysis
## [11.0.4] - 2024-06-29
### Fixed
* [#967](https://github.com/sebastianbergmann/php-code-coverage/issues/967): Identification of executable lines for `match` expressions does not work correctly
## [11.0.3] - 2024-03-12
### Fixed
* [#1033](https://github.com/sebastianbergmann/php-code-coverage/issues/1033): `@codeCoverageIgnore` annotation does not work on `enum`
## [11.0.2] - 2024-03-09
### Changed
* [#1032](https://github.com/sebastianbergmann/php-code-coverage/pull/1032): Pad lines in code coverage report only when colors are shown
## [11.0.1] - 2024-03-02
### Changed
* Do not use implicitly nullable parameters
## [11.0.0] - 2024-02-02
### Removed
* The `SebastianBergmann\CodeCoverage\Filter::includeDirectory()`, `SebastianBergmann\CodeCoverage\Filter::excludeDirectory()`, and `SebastianBergmann\CodeCoverage\Filter::excludeFile()` methods have been removed
* This component now requires PHP-Parser 5
* This component is no longer supported on PHP 8.1
[11.0.8]: https://github.com/sebastianbergmann/php-code-coverage/compare/11.0.7...11.0.8
[11.0.7]: https://github.com/sebastianbergmann/php-code-coverage/compare/11.0.6...11.0.7
[11.0.6]: https://github.com/sebastianbergmann/php-code-coverage/compare/11.0.5...11.0.6
[11.0.5]: https://github.com/sebastianbergmann/php-code-coverage/compare/11.0.4...11.0.5
[11.0.4]: https://github.com/sebastianbergmann/php-code-coverage/compare/11.0.3...11.0.4
[11.0.3]: https://github.com/sebastianbergmann/php-code-coverage/compare/11.0.2...11.0.3
[11.0.2]: https://github.com/sebastianbergmann/php-code-coverage/compare/11.0.1...11.0.2
[11.0.1]: https://github.com/sebastianbergmann/php-code-coverage/compare/11.0.0...11.0.1
[11.0.0]: https://github.com/sebastianbergmann/php-code-coverage/compare/10.1...11.0.0

View File

@ -1,19 +0,0 @@
# ChangeLog
All notable changes are documented in this file using the [Keep a CHANGELOG](http://keepachangelog.com/) principles.
## [12.0.0] - 2025-02-07
### Changed
* `CodeCoverage::stop()` and `CodeCoverage::append()` now expect arguments of type `TargetCollection` instead of `array` to configure code coverage targets
### Removed
* Methods `CodeCoverage::includeUncoveredFiles()` and `CodeCoverage::excludeUncoveredFiles()`
* Method `CodeCoverage::detectsDeadCode()`
* Optional argument `$linesToBeUsed` of `CodeCoverage::stop()` and `CodeCoverage::append()` methods
* This component is no longer supported on PHP 8.2
* This component no longer supports Xdebug versions before Xdebug 3.1
[12.0.0]: https://github.com/sebastianbergmann/php-code-coverage/compare/11.0...main

View File

@ -1,6 +1,6 @@
BSD 3-Clause License BSD 3-Clause License
Copyright (c) 2009-2025, Sebastian Bergmann Copyright (c) 2009-2024, Sebastian Bergmann
All rights reserved. All rights reserved.
Redistribution and use in source and binary forms, with or without Redistribution and use in source and binary forms, with or without

View File

@ -22,29 +22,29 @@
}, },
"config": { "config": {
"platform": { "platform": {
"php": "8.3.0" "php": "8.2.0"
}, },
"optimize-autoloader": true, "optimize-autoloader": true,
"sort-packages": true "sort-packages": true
}, },
"minimum-stability": "dev",
"prefer-stable": true, "prefer-stable": true,
"require": { "require": {
"php": ">=8.3", "php": ">=8.2",
"ext-dom": "*", "ext-dom": "*",
"ext-libxml": "*", "ext-libxml": "*",
"ext-xmlwriter": "*", "ext-xmlwriter": "*",
"nikic/php-parser": "^5.4.0", "nikic/php-parser": "^5.3.1",
"phpunit/php-file-iterator": "^6.0-dev", "phpunit/php-file-iterator": "^5.1.0",
"phpunit/php-text-template": "^5.0-dev", "phpunit/php-text-template": "^4.0.1",
"sebastian/complexity": "^5.0-dev", "sebastian/code-unit-reverse-lookup": "^4.0.1",
"sebastian/environment": "^8.0-dev", "sebastian/complexity": "^4.0.1",
"sebastian/lines-of-code": "^4.0-dev", "sebastian/environment": "^7.2.0",
"sebastian/version": "^6.0-dev", "sebastian/lines-of-code": "^3.0.1",
"sebastian/version": "^5.0.2",
"theseer/tokenizer": "^1.2.3" "theseer/tokenizer": "^1.2.3"
}, },
"require-dev": { "require-dev": {
"phpunit/phpunit": "^12.0-dev" "phpunit/phpunit": "^11.5.0"
}, },
"suggest": { "suggest": {
"ext-pcov": "PHP extension that provides line coverage", "ext-pcov": "PHP extension that provides line coverage",
@ -62,7 +62,7 @@
}, },
"extra": { "extra": {
"branch-alias": { "branch-alias": {
"dev-main": "12.0.x-dev" "dev-main": "11.0.x-dev"
} }
} }
} }

View File

@ -14,9 +14,11 @@ use function array_diff_key;
use function array_flip; use function array_flip;
use function array_keys; use function array_keys;
use function array_merge; use function array_merge;
use function array_merge_recursive;
use function array_unique; use function array_unique;
use function count; use function count;
use function explode; use function explode;
use function is_array;
use function is_file; use function is_file;
use function sort; use function sort;
use ReflectionClass; use ReflectionClass;
@ -28,33 +30,37 @@ use SebastianBergmann\CodeCoverage\Node\Directory;
use SebastianBergmann\CodeCoverage\StaticAnalysis\CachingFileAnalyser; use SebastianBergmann\CodeCoverage\StaticAnalysis\CachingFileAnalyser;
use SebastianBergmann\CodeCoverage\StaticAnalysis\FileAnalyser; use SebastianBergmann\CodeCoverage\StaticAnalysis\FileAnalyser;
use SebastianBergmann\CodeCoverage\StaticAnalysis\ParsingFileAnalyser; use SebastianBergmann\CodeCoverage\StaticAnalysis\ParsingFileAnalyser;
use SebastianBergmann\CodeCoverage\Test\Target\MapBuilder;
use SebastianBergmann\CodeCoverage\Test\Target\Mapper;
use SebastianBergmann\CodeCoverage\Test\Target\TargetCollection;
use SebastianBergmann\CodeCoverage\Test\Target\TargetCollectionValidator;
use SebastianBergmann\CodeCoverage\Test\Target\ValidationResult;
use SebastianBergmann\CodeCoverage\Test\TestSize\TestSize; use SebastianBergmann\CodeCoverage\Test\TestSize\TestSize;
use SebastianBergmann\CodeCoverage\Test\TestStatus\TestStatus; use SebastianBergmann\CodeCoverage\Test\TestStatus\TestStatus;
use SebastianBergmann\CodeUnitReverseLookup\Wizard;
/** /**
* Provides collection functionality for PHP code coverage information. * Provides collection functionality for PHP code coverage information.
* *
* @phpstan-type TestType array{size: string, status: string} * @phpstan-type TestType = array{
* @phpstan-type TargetedLines array<non-empty-string, list<positive-int>> * size: string,
* status: string,
* }
*/ */
final class CodeCoverage final class CodeCoverage
{ {
private const string UNCOVERED_FILES = 'UNCOVERED_FILES'; private const UNCOVERED_FILES = 'UNCOVERED_FILES';
private readonly Driver $driver; private readonly Driver $driver;
private readonly Filter $filter; private readonly Filter $filter;
private ?Mapper $targetMapper = null; private readonly Wizard $wizard;
private bool $checkForUnintentionallyCoveredCode = false; private bool $checkForUnintentionallyCoveredCode = false;
private bool $includeUncoveredFiles = true;
private bool $ignoreDeprecatedCode = false; private bool $ignoreDeprecatedCode = false;
private ?string $currentId = null; private ?string $currentId = null;
private ?TestSize $currentSize = null; private ?TestSize $currentSize = null;
private ProcessedCodeCoverageData $data; private ProcessedCodeCoverageData $data;
private bool $useAnnotationsForIgnoringCode = true; private bool $useAnnotationsForIgnoringCode = true;
/**
* @var array<string,list<int>>
*/
private array $linesToBeIgnored = [];
/** /**
* @var array<string, TestType> * @var array<string, TestType>
*/ */
@ -73,6 +79,7 @@ final class CodeCoverage
$this->driver = $driver; $this->driver = $driver;
$this->filter = $filter; $this->filter = $filter;
$this->data = new ProcessedCodeCoverageData; $this->data = new ProcessedCodeCoverageData;
$this->wizard = new Wizard;
} }
/** /**
@ -121,7 +128,9 @@ final class CodeCoverage
public function getData(bool $raw = false): ProcessedCodeCoverageData public function getData(bool $raw = false): ProcessedCodeCoverageData
{ {
if (!$raw) { if (!$raw) {
$this->addUncoveredFilesFromFilter(); if ($this->includeUncoveredFiles) {
$this->addUncoveredFilesFromFilter();
}
} }
return $this->data; return $this->data;
@ -165,11 +174,19 @@ final class CodeCoverage
$this->cachedReport = null; $this->cachedReport = null;
} }
public function stop(bool $append = true, ?TestStatus $status = null, null|false|TargetCollection $covers = null, ?TargetCollection $uses = null): RawCodeCoverageData /**
* @param array<string,list<int>> $linesToBeIgnored
*/
public function stop(bool $append = true, ?TestStatus $status = null, array|false $linesToBeCovered = [], array $linesToBeUsed = [], array $linesToBeIgnored = []): RawCodeCoverageData
{ {
$data = $this->driver->stop(); $data = $this->driver->stop();
$this->append($data, null, $append, $status, $covers, $uses); $this->linesToBeIgnored = array_merge_recursive(
$this->linesToBeIgnored,
$linesToBeIgnored,
);
$this->append($data, null, $append, $status, $linesToBeCovered, $linesToBeUsed, $linesToBeIgnored);
$this->currentId = null; $this->currentId = null;
$this->currentSize = null; $this->currentSize = null;
@ -179,11 +196,13 @@ final class CodeCoverage
} }
/** /**
* @param array<string,list<int>> $linesToBeIgnored
*
* @throws ReflectionException * @throws ReflectionException
* @throws TestIdMissingException * @throws TestIdMissingException
* @throws UnintentionallyCoveredCodeException * @throws UnintentionallyCoveredCodeException
*/ */
public function append(RawCodeCoverageData $rawData, ?string $id = null, bool $append = true, ?TestStatus $status = null, null|false|TargetCollection $covers = null, ?TargetCollection $uses = null): void public function append(RawCodeCoverageData $rawData, ?string $id = null, bool $append = true, ?TestStatus $status = null, array|false $linesToBeCovered = [], array $linesToBeUsed = [], array $linesToBeIgnored = []): void
{ {
if ($id === null) { if ($id === null) {
$id = $this->currentId; $id = $this->currentId;
@ -193,32 +212,24 @@ final class CodeCoverage
throw new TestIdMissingException; throw new TestIdMissingException;
} }
$this->cachedReport = null;
if ($status === null) { if ($status === null) {
$status = TestStatus::unknown(); $status = TestStatus::unknown();
} }
if ($covers === null) {
$covers = TargetCollection::fromArray([]);
}
if ($uses === null) {
$uses = TargetCollection::fromArray([]);
}
$size = $this->currentSize; $size = $this->currentSize;
if ($size === null) { if ($size === null) {
$size = TestSize::unknown(); $size = TestSize::unknown();
} }
$this->cachedReport = null;
$this->applyFilter($rawData); $this->applyFilter($rawData);
$this->applyExecutableLinesFilter($rawData); $this->applyExecutableLinesFilter($rawData);
if ($this->useAnnotationsForIgnoringCode) { if ($this->useAnnotationsForIgnoringCode) {
$this->applyIgnoredLinesFilter($rawData); $this->applyIgnoredLinesFilter($rawData, $linesToBeIgnored);
} }
$this->data->initializeUnseenData($rawData); $this->data->initializeUnseenData($rawData);
@ -231,17 +242,6 @@ final class CodeCoverage
return; return;
} }
$linesToBeCovered = false;
$linesToBeUsed = [];
if ($covers !== false) {
$linesToBeCovered = $this->targetMapper()->mapTargets($covers);
}
if ($linesToBeCovered !== false) {
$linesToBeUsed = $this->targetMapper()->mapTargets($uses);
}
$this->applyCoversAndUsesFilter( $this->applyCoversAndUsesFilter(
$rawData, $rawData,
$linesToBeCovered, $linesToBeCovered,
@ -287,6 +287,22 @@ final class CodeCoverage
$this->checkForUnintentionallyCoveredCode = false; $this->checkForUnintentionallyCoveredCode = false;
} }
/**
* @deprecated
*/
public function includeUncoveredFiles(): void
{
$this->includeUncoveredFiles = true;
}
/**
* @deprecated
*/
public function excludeUncoveredFiles(): void
{
$this->includeUncoveredFiles = false;
}
public function enableAnnotationsForIgnoringCode(): void public function enableAnnotationsForIgnoringCode(): void
{ {
$this->useAnnotationsForIgnoringCode = true; $this->useAnnotationsForIgnoringCode = true;
@ -362,15 +378,12 @@ final class CodeCoverage
return $this->driver->collectsBranchAndPathCoverage(); return $this->driver->collectsBranchAndPathCoverage();
} }
public function validate(TargetCollection $targets): ValidationResult public function detectsDeadCode(): bool
{ {
return (new TargetCollectionValidator)->validate($this->targetMapper(), $targets); return $this->driver->detectsDeadCode();
} }
/** /**
* @param false|TargetedLines $linesToBeCovered
* @param TargetedLines $linesToBeUsed
*
* @throws ReflectionException * @throws ReflectionException
* @throws UnintentionallyCoveredCodeException * @throws UnintentionallyCoveredCodeException
*/ */
@ -397,9 +410,11 @@ final class CodeCoverage
$rawData->removeCoverageDataForFile($fileWithNoCoverage); $rawData->removeCoverageDataForFile($fileWithNoCoverage);
} }
foreach ($linesToBeCovered as $fileToBeCovered => $includedLines) { if (is_array($linesToBeCovered)) {
$rawData->keepLineCoverageDataOnlyForLines($fileToBeCovered, $includedLines); foreach ($linesToBeCovered as $fileToBeCovered => $includedLines) {
$rawData->keepFunctionCoverageDataOnlyForLines($fileToBeCovered, $includedLines); $rawData->keepLineCoverageDataOnlyForLines($fileToBeCovered, $includedLines);
$rawData->keepFunctionCoverageDataOnlyForLines($fileToBeCovered, $includedLines);
}
} }
} }
@ -437,13 +452,23 @@ final class CodeCoverage
} }
} }
private function applyIgnoredLinesFilter(RawCodeCoverageData $data): void /**
* @param array<string,list<int>> $linesToBeIgnored
*/
private function applyIgnoredLinesFilter(RawCodeCoverageData $data, array $linesToBeIgnored): void
{ {
foreach (array_keys($data->lineCoverage()) as $filename) { foreach (array_keys($data->lineCoverage()) as $filename) {
if (!$this->filter->isFile($filename)) { if (!$this->filter->isFile($filename)) {
continue; continue;
} }
if (isset($linesToBeIgnored[$filename])) {
$data->removeCoverageDataForLines(
$filename,
$linesToBeIgnored[$filename],
);
}
$data->removeCoverageDataForLines( $data->removeCoverageDataForLines(
$filename, $filename,
$this->analyser()->ignoredLinesFor($filename), $this->analyser()->ignoredLinesFor($filename),
@ -469,15 +494,13 @@ final class CodeCoverage
$this->analyser(), $this->analyser(),
), ),
self::UNCOVERED_FILES, self::UNCOVERED_FILES,
linesToBeIgnored: $this->linesToBeIgnored,
); );
} }
} }
} }
/** /**
* @param TargetedLines $linesToBeCovered
* @param TargetedLines $linesToBeUsed
*
* @throws ReflectionException * @throws ReflectionException
* @throws UnintentionallyCoveredCodeException * @throws UnintentionallyCoveredCodeException
*/ */
@ -493,7 +516,7 @@ final class CodeCoverage
foreach ($data->lineCoverage() as $file => $_data) { foreach ($data->lineCoverage() as $file => $_data) {
foreach ($_data as $line => $flag) { foreach ($_data as $line => $flag) {
if ($flag === 1 && !isset($allowedLines[$file][$line])) { if ($flag === 1 && !isset($allowedLines[$file][$line])) {
$unintentionallyCoveredUnits[] = $this->targetMapper->lookup($file, $line); $unintentionallyCoveredUnits[] = $this->wizard->lookup($file, $line);
} }
} }
} }
@ -507,12 +530,6 @@ final class CodeCoverage
} }
} }
/**
* @param TargetedLines $linesToBeCovered
* @param TargetedLines $linesToBeUsed
*
* @return TargetedLines
*/
private function getAllowedLines(array $linesToBeCovered, array $linesToBeUsed): array private function getAllowedLines(array $linesToBeCovered, array $linesToBeUsed): array
{ {
$allowedLines = []; $allowedLines = [];
@ -595,19 +612,6 @@ final class CodeCoverage
return $processed; return $processed;
} }
private function targetMapper(): Mapper
{
if ($this->targetMapper !== null) {
return $this->targetMapper;
}
$this->targetMapper = new Mapper(
(new MapBuilder)->build($this->filter, $this->analyser()),
);
return $this->targetMapper;
}
private function analyser(): FileAnalyser private function analyser(): FileAnalyser
{ {
if ($this->analyser !== null) { if ($this->analyser !== null) {

View File

@ -17,31 +17,13 @@ use function count;
use function is_array; use function is_array;
use function ksort; use function ksort;
use SebastianBergmann\CodeCoverage\Driver\Driver; use SebastianBergmann\CodeCoverage\Driver\Driver;
use SebastianBergmann\CodeCoverage\Driver\XdebugDriver;
/** /**
* @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage
* *
* @phpstan-import-type XdebugFunctionCoverageType from XdebugDriver * @phpstan-import-type XdebugFunctionCoverageType from \SebastianBergmann\CodeCoverage\Driver\XdebugDriver
* *
* @phpstan-type TestIdType string * @phpstan-type TestIdType = string
* @phpstan-type FunctionCoverageDataType array{
* branches: array<int, array{
* op_start: int,
* op_end: int,
* line_start: int,
* line_end: int,
* hit: list<TestIdType>,
* out: array<int, int>,
* out_hit: array<int, int>,
* }>,
* paths: array<int, array{
* path: array<int, int>,
* hit: list<TestIdType>,
* }>,
* hit: list<TestIdType>
* }
* @phpstan-type FunctionCoverageType array<string, array<string, FunctionCoverageDataType>>
*/ */
final class ProcessedCodeCoverageData final class ProcessedCodeCoverageData
{ {
@ -58,7 +40,22 @@ final class ProcessedCodeCoverageData
* Maintains base format of raw data (@see https://xdebug.org/docs/code_coverage), but each 'hit' entry is an array * Maintains base format of raw data (@see https://xdebug.org/docs/code_coverage), but each 'hit' entry is an array
* of testcase ids. * of testcase ids.
* *
* @var FunctionCoverageType * @var array<string, array<string, array{
* branches: array<int, array{
* op_start: int,
* op_end: int,
* line_start: int,
* line_end: int,
* hit: list<TestIdType>,
* out: array<int, int>,
* out_hit: array<int, int>,
* }>,
* paths: array<int, array{
* path: array<int, int>,
* hit: list<TestIdType>,
* }>,
* hit: list<TestIdType>
* }>>
*/ */
private array $functionCoverage = []; private array $functionCoverage = [];
@ -219,8 +216,6 @@ final class ProcessedCodeCoverageData
* 4 = the line has been tested * 4 = the line has been tested
* *
* During a merge, a higher number is better. * During a merge, a higher number is better.
*
* @return 1|2|3|4
*/ */
private function priorityForLine(array $data, int $line): int private function priorityForLine(array $data, int $line): int
{ {
@ -242,7 +237,7 @@ final class ProcessedCodeCoverageData
/** /**
* For a function we have never seen before, copy all data over and simply init the 'hit' array. * For a function we have never seen before, copy all data over and simply init the 'hit' array.
* *
* @param FunctionCoverageDataType|XdebugFunctionCoverageType $functionData * @param XdebugFunctionCoverageType $functionData
*/ */
private function initPreviouslyUnseenFunction(string $file, string $functionName, array $functionData): void private function initPreviouslyUnseenFunction(string $file, string $functionName, array $functionData): void
{ {
@ -262,7 +257,7 @@ final class ProcessedCodeCoverageData
* Techniques such as mocking and where the contents of a file are different vary during tests (e.g. compiling * Techniques such as mocking and where the contents of a file are different vary during tests (e.g. compiling
* containers) mean that the functions inside a file cannot be relied upon to be static. * containers) mean that the functions inside a file cannot be relied upon to be static.
* *
* @param FunctionCoverageDataType|XdebugFunctionCoverageType $functionData * @param XdebugFunctionCoverageType $functionData
*/ */
private function initPreviouslySeenFunction(string $file, string $functionName, array $functionData): void private function initPreviouslySeenFunction(string $file, string $functionName, array $functionData): void
{ {

View File

@ -14,7 +14,6 @@ use function array_diff_key;
use function array_flip; use function array_flip;
use function array_intersect; use function array_intersect;
use function array_intersect_key; use function array_intersect_key;
use function array_map;
use function count; use function count;
use function explode; use function explode;
use function file_get_contents; use function file_get_contents;
@ -26,15 +25,14 @@ use function str_ends_with;
use function str_starts_with; use function str_starts_with;
use function trim; use function trim;
use SebastianBergmann\CodeCoverage\Driver\Driver; use SebastianBergmann\CodeCoverage\Driver\Driver;
use SebastianBergmann\CodeCoverage\Driver\XdebugDriver;
use SebastianBergmann\CodeCoverage\StaticAnalysis\FileAnalyser; use SebastianBergmann\CodeCoverage\StaticAnalysis\FileAnalyser;
/** /**
* @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage
* *
* @phpstan-import-type XdebugFunctionsCoverageType from XdebugDriver * @phpstan-import-type XdebugFunctionsCoverageType from \SebastianBergmann\CodeCoverage\Driver\XdebugDriver
* @phpstan-import-type XdebugCodeCoverageWithoutPathCoverageType from XdebugDriver * @phpstan-import-type XdebugCodeCoverageWithoutPathCoverageType from \SebastianBergmann\CodeCoverage\Driver\XdebugDriver
* @phpstan-import-type XdebugCodeCoverageWithPathCoverageType from XdebugDriver * @phpstan-import-type XdebugCodeCoverageWithPathCoverageType from \SebastianBergmann\CodeCoverage\Driver\XdebugDriver
*/ */
final class RawCodeCoverageData final class RawCodeCoverageData
{ {
@ -88,10 +86,11 @@ final class RawCodeCoverageData
public static function fromUncoveredFile(string $filename, FileAnalyser $analyser): self public static function fromUncoveredFile(string $filename, FileAnalyser $analyser): self
{ {
$lineCoverage = array_map( $lineCoverage = [];
static fn (): int => Driver::LINE_NOT_EXECUTED,
$analyser->executableLinesIn($filename), foreach ($analyser->executableLinesIn($filename) as $line => $branch) {
); $lineCoverage[$line] = Driver::LINE_NOT_EXECUTED;
}
return new self([$filename => $lineCoverage], []); return new self([$filename => $lineCoverage], []);
} }
@ -261,9 +260,6 @@ final class RawCodeCoverageData
} }
} }
/**
* @return array<int>
*/
private function getEmptyLinesForFile(string $filename): array private function getEmptyLinesForFile(string $filename): array
{ {
if (!isset(self::$emptyLineCache[$filename])) { if (!isset(self::$emptyLineCache[$filename])) {

View File

@ -12,6 +12,7 @@ namespace SebastianBergmann\CodeCoverage\Driver;
use function sprintf; use function sprintf;
use SebastianBergmann\CodeCoverage\BranchAndPathCoverageNotSupportedException; use SebastianBergmann\CodeCoverage\BranchAndPathCoverageNotSupportedException;
use SebastianBergmann\CodeCoverage\Data\RawCodeCoverageData; use SebastianBergmann\CodeCoverage\Data\RawCodeCoverageData;
use SebastianBergmann\CodeCoverage\DeadCodeDetectionNotSupportedException;
/** /**
* @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage
@ -23,36 +24,37 @@ abstract class Driver
* *
* @see http://xdebug.org/docs/code_coverage * @see http://xdebug.org/docs/code_coverage
*/ */
public const int LINE_NOT_EXECUTABLE = -2; public const LINE_NOT_EXECUTABLE = -2;
/** /**
* @var int * @var int
* *
* @see http://xdebug.org/docs/code_coverage * @see http://xdebug.org/docs/code_coverage
*/ */
public const int LINE_NOT_EXECUTED = -1; public const LINE_NOT_EXECUTED = -1;
/** /**
* @var int * @var int
* *
* @see http://xdebug.org/docs/code_coverage * @see http://xdebug.org/docs/code_coverage
*/ */
public const int LINE_EXECUTED = 1; public const LINE_EXECUTED = 1;
/** /**
* @var int * @var int
* *
* @see http://xdebug.org/docs/code_coverage * @see http://xdebug.org/docs/code_coverage
*/ */
public const int BRANCH_NOT_HIT = 0; public const BRANCH_NOT_HIT = 0;
/** /**
* @var int * @var int
* *
* @see http://xdebug.org/docs/code_coverage * @see http://xdebug.org/docs/code_coverage
*/ */
public const int BRANCH_HIT = 1; public const BRANCH_HIT = 1;
private bool $collectBranchAndPathCoverage = false; private bool $collectBranchAndPathCoverage = false;
private bool $detectDeadCode = false;
public function canCollectBranchAndPathCoverage(): bool public function canCollectBranchAndPathCoverage(): bool
{ {
@ -86,6 +88,38 @@ abstract class Driver
$this->collectBranchAndPathCoverage = false; $this->collectBranchAndPathCoverage = false;
} }
public function canDetectDeadCode(): bool
{
return false;
}
public function detectsDeadCode(): bool
{
return $this->detectDeadCode;
}
/**
* @throws DeadCodeDetectionNotSupportedException
*/
public function enableDeadCodeDetection(): void
{
if (!$this->canDetectDeadCode()) {
throw new DeadCodeDetectionNotSupportedException(
sprintf(
'%s does not support dead code detection',
$this->nameAndVersion(),
),
);
}
$this->detectDeadCode = true;
}
public function disableDeadCodeDetection(): void
{
$this->detectDeadCode = false;
}
abstract public function nameAndVersion(): string; abstract public function nameAndVersion(): string;
abstract public function start(): void; abstract public function start(): void;

View File

@ -38,9 +38,6 @@ final class PcovDriver extends Driver
$this->filter = $filter; $this->filter = $filter;
} }
/**
* @codeCoverageIgnore
*/
public function start(): void public function start(): void
{ {
start(); start();
@ -50,7 +47,6 @@ final class PcovDriver extends Driver
{ {
stop(); stop();
// @codeCoverageIgnoreStart
$filesToCollectCoverageFor = waiting(); $filesToCollectCoverageFor = waiting();
$collected = []; $collected = [];
@ -65,7 +61,6 @@ final class PcovDriver extends Driver
} }
return RawCodeCoverageData::fromXdebugWithoutPathCoverage($collected); return RawCodeCoverageData::fromXdebugWithoutPathCoverage($collected);
// @codeCoverageIgnoreEnd
} }
public function nameAndVersion(): string public function nameAndVersion(): string

View File

@ -21,7 +21,6 @@ final class Selector
* @throws PcovNotAvailableException * @throws PcovNotAvailableException
* @throws XdebugNotAvailableException * @throws XdebugNotAvailableException
* @throws XdebugNotEnabledException * @throws XdebugNotEnabledException
* @throws XdebugVersionNotSupportedException
*/ */
public function forLineCoverage(Filter $filter): Driver public function forLineCoverage(Filter $filter): Driver
{ {
@ -32,7 +31,11 @@ final class Selector
} }
if ($runtime->hasXdebug()) { if ($runtime->hasXdebug()) {
return new XdebugDriver($filter); $driver = new XdebugDriver($filter);
$driver->enableDeadCodeDetection();
return $driver;
} }
throw new NoCodeCoverageDriverAvailableException; throw new NoCodeCoverageDriverAvailableException;
@ -42,13 +45,13 @@ final class Selector
* @throws NoCodeCoverageDriverWithPathCoverageSupportAvailableException * @throws NoCodeCoverageDriverWithPathCoverageSupportAvailableException
* @throws XdebugNotAvailableException * @throws XdebugNotAvailableException
* @throws XdebugNotEnabledException * @throws XdebugNotEnabledException
* @throws XdebugVersionNotSupportedException
*/ */
public function forLineAndPathCoverage(Filter $filter): Driver public function forLineAndPathCoverage(Filter $filter): Driver
{ {
if ((new Runtime)->hasXdebug()) { if ((new Runtime)->hasXdebug()) {
$driver = new XdebugDriver($filter); $driver = new XdebugDriver($filter);
$driver->enableDeadCodeDetection();
$driver->enableBranchAndPathCoverage(); $driver->enableBranchAndPathCoverage();
return $driver; return $driver;

View File

@ -14,8 +14,11 @@ use const XDEBUG_CC_DEAD_CODE;
use const XDEBUG_CC_UNUSED; use const XDEBUG_CC_UNUSED;
use const XDEBUG_FILTER_CODE_COVERAGE; use const XDEBUG_FILTER_CODE_COVERAGE;
use const XDEBUG_PATH_INCLUDE; use const XDEBUG_PATH_INCLUDE;
use function explode;
use function extension_loaded; use function extension_loaded;
use function getenv;
use function in_array; use function in_array;
use function ini_get;
use function phpversion; use function phpversion;
use function version_compare; use function version_compare;
use function xdebug_get_code_coverage; use function xdebug_get_code_coverage;
@ -31,8 +34,8 @@ use SebastianBergmann\CodeCoverage\Filter;
* *
* @see https://xdebug.org/docs/code_coverage#xdebug_get_code_coverage * @see https://xdebug.org/docs/code_coverage#xdebug_get_code_coverage
* *
* @phpstan-type XdebugLinesCoverageType array<int, int> * @phpstan-type XdebugLinesCoverageType = array<int, int>
* @phpstan-type XdebugBranchCoverageType array{ * @phpstan-type XdebugBranchCoverageType = array{
* op_start: int, * op_start: int,
* op_end: int, * op_end: int,
* line_start: int, * line_start: int,
@ -41,32 +44,32 @@ use SebastianBergmann\CodeCoverage\Filter;
* out: array<int, int>, * out: array<int, int>,
* out_hit: array<int, int>, * out_hit: array<int, int>,
* } * }
* @phpstan-type XdebugPathCoverageType array{ * @phpstan-type XdebugPathCoverageType = array{
* path: array<int, int>, * path: array<int, int>,
* hit: int, * hit: int,
* } * }
* @phpstan-type XdebugFunctionCoverageType array{ * @phpstan-type XdebugFunctionCoverageType = array{
* branches: array<int, XdebugBranchCoverageType>, * branches: array<int, XdebugBranchCoverageType>,
* paths: array<int, XdebugPathCoverageType>, * paths: array<int, XdebugPathCoverageType>,
* } * }
* @phpstan-type XdebugFunctionsCoverageType array<string, XdebugFunctionCoverageType> * @phpstan-type XdebugFunctionsCoverageType = array<string, XdebugFunctionCoverageType>
* @phpstan-type XdebugPathAndBranchesCoverageType array{ * @phpstan-type XdebugPathAndBranchesCoverageType = array{
* lines: XdebugLinesCoverageType, * lines: XdebugLinesCoverageType,
* functions: XdebugFunctionsCoverageType, * functions: XdebugFunctionsCoverageType,
* } * }
* @phpstan-type XdebugCodeCoverageWithoutPathCoverageType array<string, XdebugLinesCoverageType> * @phpstan-type XdebugCodeCoverageWithoutPathCoverageType = array<string, XdebugLinesCoverageType>
* @phpstan-type XdebugCodeCoverageWithPathCoverageType array<string, XdebugPathAndBranchesCoverageType> * @phpstan-type XdebugCodeCoverageWithPathCoverageType = array<string, XdebugPathAndBranchesCoverageType>
*/ */
final class XdebugDriver extends Driver final class XdebugDriver extends Driver
{ {
/** /**
* @throws XdebugNotAvailableException * @throws XdebugNotAvailableException
* @throws XdebugNotEnabledException * @throws XdebugNotEnabledException
* @throws XdebugVersionNotSupportedException
*/ */
public function __construct(Filter $filter) public function __construct(Filter $filter)
{ {
$this->ensureXdebugIsAvailable(); $this->ensureXdebugIsAvailable();
$this->ensureXdebugCodeCoverageFeatureIsEnabled();
if (!$filter->isEmpty()) { if (!$filter->isEmpty()) {
xdebug_set_filter( xdebug_set_filter(
@ -82,9 +85,18 @@ final class XdebugDriver extends Driver
return true; return true;
} }
public function canDetectDeadCode(): bool
{
return true;
}
public function start(): void public function start(): void
{ {
$flags = XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE; $flags = XDEBUG_CC_UNUSED;
if ($this->detectsDeadCode() || $this->collectsBranchAndPathCoverage()) {
$flags |= XDEBUG_CC_DEAD_CODE;
}
if ($this->collectsBranchAndPathCoverage()) { if ($this->collectsBranchAndPathCoverage()) {
$flags |= XDEBUG_CC_BRANCH_CHECK; $flags |= XDEBUG_CC_BRANCH_CHECK;
@ -115,20 +127,35 @@ final class XdebugDriver extends Driver
/** /**
* @throws XdebugNotAvailableException * @throws XdebugNotAvailableException
* @throws XdebugNotEnabledException
* @throws XdebugVersionNotSupportedException
*/ */
private function ensureXdebugIsAvailable(): void private function ensureXdebugIsAvailable(): void
{ {
if (!extension_loaded('xdebug')) { if (!extension_loaded('xdebug')) {
throw new XdebugNotAvailableException; throw new XdebugNotAvailableException;
} }
}
if (!version_compare(phpversion('xdebug'), '3.1', '>=')) { /**
throw new XdebugVersionNotSupportedException(phpversion('xdebug')); * @throws XdebugNotEnabledException
*/
private function ensureXdebugCodeCoverageFeatureIsEnabled(): void
{
if (version_compare(phpversion('xdebug'), '3.1', '>=')) {
if (!in_array('coverage', xdebug_info('mode'), true)) {
throw new XdebugNotEnabledException;
}
return;
} }
if (!in_array('coverage', xdebug_info('mode'), true)) { $mode = getenv('XDEBUG_MODE');
if ($mode === false || $mode === '') {
$mode = ini_get('xdebug.mode');
}
if ($mode === false ||
!in_array('coverage', explode(',', $mode), true)) {
throw new XdebugNotEnabledException; throw new XdebugNotEnabledException;
} }
} }

View File

@ -0,0 +1,16 @@
<?php declare(strict_types=1);
/*
* This file is part of phpunit/php-code-coverage.
*
* (c) Sebastian Bergmann <sebastian@phpunit.de>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace SebastianBergmann\CodeCoverage;
use RuntimeException;
final class DeadCodeDetectionNotSupportedException extends RuntimeException implements Exception
{
}

View File

@ -1,27 +0,0 @@
<?php declare(strict_types=1);
/*
* This file is part of phpunit/php-code-coverage.
*
* (c) Sebastian Bergmann <sebastian@phpunit.de>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace SebastianBergmann\CodeCoverage\Test\Target;
use function sprintf;
use RuntimeException;
use SebastianBergmann\CodeCoverage\Exception;
final class InvalidCodeCoverageTargetException extends RuntimeException implements Exception
{
public function __construct(Target $target)
{
parent::__construct(
sprintf(
'%s is not a valid target for code coverage',
$target->description(),
),
);
}
}

View File

@ -1,30 +0,0 @@
<?php declare(strict_types=1);
/*
* This file is part of phpunit/php-code-coverage.
*
* (c) Sebastian Bergmann <sebastian@phpunit.de>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace SebastianBergmann\CodeCoverage\Driver;
use function sprintf;
use RuntimeException;
use SebastianBergmann\CodeCoverage\Exception;
final class XdebugVersionNotSupportedException extends RuntimeException implements Exception
{
/**
* @param non-empty-string $version
*/
public function __construct(string $version)
{
parent::__construct(
sprintf(
'Version %s of the Xdebug extension is not supported',
$version,
),
);
}
}

View File

@ -15,24 +15,20 @@ use function str_ends_with;
use function str_replace; use function str_replace;
use function substr; use function substr;
use Countable; use Countable;
use SebastianBergmann\CodeCoverage\StaticAnalysis\LinesOfCode;
use SebastianBergmann\CodeCoverage\Util\Percentage; use SebastianBergmann\CodeCoverage\Util\Percentage;
/** /**
* @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage
* *
* @phpstan-import-type ProcessedFunctionType from File * @phpstan-import-type LinesOfCodeType from \SebastianBergmann\CodeCoverage\StaticAnalysis\FileAnalyser
* @phpstan-import-type ProcessedClassType from File * @phpstan-import-type ProcessedFunctionType from \SebastianBergmann\CodeCoverage\Node\File
* @phpstan-import-type ProcessedTraitType from File * @phpstan-import-type ProcessedClassType from \SebastianBergmann\CodeCoverage\Node\File
* @phpstan-import-type ProcessedTraitType from \SebastianBergmann\CodeCoverage\Node\File
*/ */
abstract class AbstractNode implements Countable abstract class AbstractNode implements Countable
{ {
private readonly string $name; private readonly string $name;
private string $pathAsString; private string $pathAsString;
/**
* @var non-empty-list<self>
*/
private array $pathAsArray; private array $pathAsArray;
private readonly ?AbstractNode $parent; private readonly ?AbstractNode $parent;
private string $id; private string $id;
@ -65,9 +61,6 @@ abstract class AbstractNode implements Countable
return $this->pathAsString; return $this->pathAsString;
} }
/**
* @return non-empty-list<self>
*/
public function pathAsArray(): array public function pathAsArray(): array
{ {
return $this->pathAsArray; return $this->pathAsArray;
@ -193,7 +186,10 @@ abstract class AbstractNode implements Countable
*/ */
abstract public function functions(): array; abstract public function functions(): array;
abstract public function linesOfCode(): LinesOfCode; /**
* @return LinesOfCodeType
*/
abstract public function linesOfCode(): array;
abstract public function numberOfExecutableLines(): int; abstract public function numberOfExecutableLines(): int;

View File

@ -28,11 +28,11 @@ use SebastianBergmann\CodeCoverage\StaticAnalysis\FileAnalyser;
/** /**
* @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage
* *
* @phpstan-import-type TestType from CodeCoverage * @phpstan-import-type TestType from \SebastianBergmann\CodeCoverage\CodeCoverage
*/ */
final readonly class Builder final class Builder
{ {
private FileAnalyser $analyser; private readonly FileAnalyser $analyser;
public function __construct(FileAnalyser $analyser) public function __construct(FileAnalyser $analyser)
{ {
@ -223,7 +223,6 @@ final readonly class Builder
$paths[$i] = substr($paths[$i], 7); $paths[$i] = substr($paths[$i], 7);
$paths[$i] = str_replace('/', DIRECTORY_SEPARATOR, $paths[$i]); $paths[$i] = str_replace('/', DIRECTORY_SEPARATOR, $paths[$i]);
} }
$paths[$i] = explode(DIRECTORY_SEPARATOR, $paths[$i]); $paths[$i] = explode(DIRECTORY_SEPARATOR, $paths[$i]);
if (empty($paths[$i][0])) { if (empty($paths[$i][0])) {

View File

@ -14,10 +14,10 @@ use function sprintf;
/** /**
* @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage
*/ */
final readonly class CrapIndex final class CrapIndex
{ {
private int $cyclomaticComplexity; private readonly int $cyclomaticComplexity;
private float $codeCoverage; private readonly float $codeCoverage;
public function __construct(int $cyclomaticComplexity, float $codeCoverage) public function __construct(int $cyclomaticComplexity, float $codeCoverage)
{ {

View File

@ -14,16 +14,11 @@ use function assert;
use function count; use function count;
use IteratorAggregate; use IteratorAggregate;
use RecursiveIteratorIterator; use RecursiveIteratorIterator;
use SebastianBergmann\CodeCoverage\StaticAnalysis\LinesOfCode;
/** /**
* @template-implements IteratorAggregate<int, AbstractNode>
*
* @phpstan-import-type ProcessedFunctionType from File
* @phpstan-import-type ProcessedClassType from File
* @phpstan-import-type ProcessedTraitType from File
*
* @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage
*
* @phpstan-import-type LinesOfCodeType from \SebastianBergmann\CodeCoverage\StaticAnalysis\FileAnalyser
*/ */
final class Directory extends AbstractNode implements IteratorAggregate final class Directory extends AbstractNode implements IteratorAggregate
{ {
@ -40,23 +35,15 @@ final class Directory extends AbstractNode implements IteratorAggregate
/** /**
* @var list<File> * @var list<File>
*/ */
private array $files = []; private array $files = [];
private ?array $classes = null;
private ?array $traits = null;
private ?array $functions = null;
/** /**
* @var ?array<string, ProcessedClassType> * @var null|LinesOfCodeType
*/ */
private ?array $classes = null; private ?array $linesOfCode = null;
/**
* @var ?array<string, ProcessedTraitType>
*/
private ?array $traits = null;
/**
* @var ?array<string, ProcessedFunctionType>
*/
private ?array $functions = null;
private ?LinesOfCode $linesOfCode = null;
private int $numFiles = -1; private int $numFiles = -1;
private int $numExecutableLines = -1; private int $numExecutableLines = -1;
private int $numExecutedLines = -1; private int $numExecutedLines = -1;
@ -86,9 +73,6 @@ final class Directory extends AbstractNode implements IteratorAggregate
return $this->numFiles; return $this->numFiles;
} }
/**
* @return RecursiveIteratorIterator<Iterator<AbstractNode>>
*/
public function getIterator(): RecursiveIteratorIterator public function getIterator(): RecursiveIteratorIterator
{ {
return new RecursiveIteratorIterator( return new RecursiveIteratorIterator(
@ -118,33 +102,21 @@ final class Directory extends AbstractNode implements IteratorAggregate
$this->numExecutedLines = -1; $this->numExecutedLines = -1;
} }
/**
* @return list<Directory>
*/
public function directories(): array public function directories(): array
{ {
return $this->directories; return $this->directories;
} }
/**
* @return list<File>
*/
public function files(): array public function files(): array
{ {
return $this->files; return $this->files;
} }
/**
* @return list<Directory|File>
*/
public function children(): array public function children(): array
{ {
return $this->children; return $this->children;
} }
/**
* @return array<string, ProcessedClassType>
*/
public function classes(): array public function classes(): array
{ {
if ($this->classes === null) { if ($this->classes === null) {
@ -161,9 +133,6 @@ final class Directory extends AbstractNode implements IteratorAggregate
return $this->classes; return $this->classes;
} }
/**
* @return array<string, ProcessedTraitType>
*/
public function traits(): array public function traits(): array
{ {
if ($this->traits === null) { if ($this->traits === null) {
@ -180,9 +149,6 @@ final class Directory extends AbstractNode implements IteratorAggregate
return $this->traits; return $this->traits;
} }
/**
* @return array<string, ProcessedFunctionType>
*/
public function functions(): array public function functions(): array
{ {
if ($this->functions === null) { if ($this->functions === null) {
@ -199,22 +165,25 @@ final class Directory extends AbstractNode implements IteratorAggregate
return $this->functions; return $this->functions;
} }
public function linesOfCode(): LinesOfCode /**
* @return LinesOfCodeType
*/
public function linesOfCode(): array
{ {
if ($this->linesOfCode === null) { if ($this->linesOfCode === null) {
$linesOfCode = 0; $this->linesOfCode = [
$commentLinesOfCode = 0; 'linesOfCode' => 0,
$nonCommentLinesOfCode = 0; 'commentLinesOfCode' => 0,
'nonCommentLinesOfCode' => 0,
];
foreach ($this->children as $child) { foreach ($this->children as $child) {
$childLinesOfCode = $child->linesOfCode(); $childLinesOfCode = $child->linesOfCode();
$linesOfCode += $childLinesOfCode->linesOfCode(); $this->linesOfCode['linesOfCode'] += $childLinesOfCode['linesOfCode'];
$commentLinesOfCode += $childLinesOfCode->commentLinesOfCode(); $this->linesOfCode['commentLinesOfCode'] += $childLinesOfCode['commentLinesOfCode'];
$nonCommentLinesOfCode += $childLinesOfCode->nonCommentLinesOfCode(); $this->linesOfCode['nonCommentLinesOfCode'] += $childLinesOfCode['nonCommentLinesOfCode'];
} }
$this->linesOfCode = new LinesOfCode($linesOfCode, $commentLinesOfCode, $nonCommentLinesOfCode);
} }
return $this->linesOfCode; return $this->linesOfCode;

View File

@ -12,21 +12,18 @@ namespace SebastianBergmann\CodeCoverage\Node;
use function array_filter; use function array_filter;
use function count; use function count;
use function range; use function range;
use SebastianBergmann\CodeCoverage\CodeCoverage;
use SebastianBergmann\CodeCoverage\StaticAnalysis\Class_;
use SebastianBergmann\CodeCoverage\StaticAnalysis\FileAnalyser;
use SebastianBergmann\CodeCoverage\StaticAnalysis\Function_;
use SebastianBergmann\CodeCoverage\StaticAnalysis\LinesOfCode;
use SebastianBergmann\CodeCoverage\StaticAnalysis\Method;
use SebastianBergmann\CodeCoverage\StaticAnalysis\Trait_;
/** /**
* @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage
* *
* @phpstan-import-type TestType from CodeCoverage * @phpstan-import-type CodeUnitFunctionType from \SebastianBergmann\CodeCoverage\StaticAnalysis\CodeUnitFindingVisitor
* @phpstan-import-type LinesType from FileAnalyser * @phpstan-import-type CodeUnitMethodType from \SebastianBergmann\CodeCoverage\StaticAnalysis\CodeUnitFindingVisitor
* @phpstan-import-type CodeUnitClassType from \SebastianBergmann\CodeCoverage\StaticAnalysis\CodeUnitFindingVisitor
* @phpstan-import-type CodeUnitTraitType from \SebastianBergmann\CodeCoverage\StaticAnalysis\CodeUnitFindingVisitor
* @phpstan-import-type LinesOfCodeType from \SebastianBergmann\CodeCoverage\StaticAnalysis\FileAnalyser
* @phpstan-import-type LinesType from \SebastianBergmann\CodeCoverage\StaticAnalysis\FileAnalyser
* *
* @phpstan-type ProcessedFunctionType array{ * @phpstan-type ProcessedFunctionType = array{
* functionName: string, * functionName: string,
* namespace: string, * namespace: string,
* signature: string, * signature: string,
@ -43,7 +40,7 @@ use SebastianBergmann\CodeCoverage\StaticAnalysis\Trait_;
* crap: int|string, * crap: int|string,
* link: string * link: string
* } * }
* @phpstan-type ProcessedMethodType array{ * @phpstan-type ProcessedMethodType = array{
* methodName: string, * methodName: string,
* visibility: string, * visibility: string,
* signature: string, * signature: string,
@ -60,7 +57,7 @@ use SebastianBergmann\CodeCoverage\StaticAnalysis\Trait_;
* crap: int|string, * crap: int|string,
* link: string * link: string
* } * }
* @phpstan-type ProcessedClassType array{ * @phpstan-type ProcessedClassType = array{
* className: string, * className: string,
* namespace: string, * namespace: string,
* methods: array<string, ProcessedMethodType>, * methods: array<string, ProcessedMethodType>,
@ -76,7 +73,7 @@ use SebastianBergmann\CodeCoverage\StaticAnalysis\Trait_;
* crap: int|string, * crap: int|string,
* link: string * link: string
* } * }
* @phpstan-type ProcessedTraitType array{ * @phpstan-type ProcessedTraitType = array{
* traitName: string, * traitName: string,
* namespace: string, * namespace: string,
* methods: array<string, ProcessedMethodType>, * methods: array<string, ProcessedMethodType>,
@ -100,10 +97,6 @@ final class File extends AbstractNode
*/ */
private array $lineCoverageData; private array $lineCoverageData;
private array $functionCoverageData; private array $functionCoverageData;
/**
* @var array<string, TestType>
*/
private readonly array $testData; private readonly array $testData;
private int $numExecutableLines = 0; private int $numExecutableLines = 0;
private int $numExecutedLines = 0; private int $numExecutedLines = 0;
@ -126,7 +119,11 @@ final class File extends AbstractNode
* @var array<string, ProcessedFunctionType> * @var array<string, ProcessedFunctionType>
*/ */
private array $functions = []; private array $functions = [];
private readonly LinesOfCode $linesOfCode;
/**
* @var LinesOfCodeType
*/
private readonly array $linesOfCode;
private ?int $numClasses = null; private ?int $numClasses = null;
private int $numTestedClasses = 0; private int $numTestedClasses = 0;
private ?int $numTraits = null; private ?int $numTraits = null;
@ -136,18 +133,18 @@ final class File extends AbstractNode
private ?int $numTestedFunctions = null; private ?int $numTestedFunctions = null;
/** /**
* @var array<int, array|array{0: Class_, 1: string}|array{0: Function_}|array{0: Trait_, 1: string}> * @var array<int, array|array{0: CodeUnitClassType, 1: string}|array{0: CodeUnitFunctionType}|array{0: CodeUnitTraitType, 1: string}>
*/ */
private array $codeUnitsByLine = []; private array $codeUnitsByLine = [];
/** /**
* @param array<int, ?list<non-empty-string>> $lineCoverageData * @param array<int, ?list<non-empty-string>> $lineCoverageData
* @param array<string, TestType> $testData * @param array<string, CodeUnitClassType> $classes
* @param array<string, Class_> $classes * @param array<string, CodeUnitTraitType> $traits
* @param array<string, Trait_> $traits * @param array<string, CodeUnitFunctionType> $functions
* @param array<string, Function_> $functions * @param LinesOfCodeType $linesOfCode
*/ */
public function __construct(string $name, AbstractNode $parent, array $lineCoverageData, array $functionCoverageData, array $testData, array $classes, array $traits, array $functions, LinesOfCode $linesOfCode) public function __construct(string $name, AbstractNode $parent, array $lineCoverageData, array $functionCoverageData, array $testData, array $classes, array $traits, array $functions, array $linesOfCode)
{ {
parent::__construct($name, $parent); parent::__construct($name, $parent);
@ -177,9 +174,6 @@ final class File extends AbstractNode
return $this->functionCoverageData; return $this->functionCoverageData;
} }
/**
* @return array<string, TestType>
*/
public function testData(): array public function testData(): array
{ {
return $this->testData; return $this->testData;
@ -209,7 +203,7 @@ final class File extends AbstractNode
return $this->functions; return $this->functions;
} }
public function linesOfCode(): LinesOfCode public function linesOfCode(): array
{ {
return $this->linesOfCode; return $this->linesOfCode;
} }
@ -366,13 +360,13 @@ final class File extends AbstractNode
} }
/** /**
* @param array<string, Class_> $classes * @param array<string, CodeUnitClassType> $classes
* @param array<string, Trait_> $traits * @param array<string, CodeUnitTraitType> $traits
* @param array<string, Function_> $functions * @param array<string, CodeUnitFunctionType> $functions
*/ */
private function calculateStatistics(array $classes, array $traits, array $functions): void private function calculateStatistics(array $classes, array $traits, array $functions): void
{ {
foreach (range(1, $this->linesOfCode->linesOfCode()) as $lineNumber) { foreach (range(1, $this->linesOfCode['linesOfCode']) as $lineNumber) {
$this->codeUnitsByLine[$lineNumber] = []; $this->codeUnitsByLine[$lineNumber] = [];
} }
@ -380,7 +374,7 @@ final class File extends AbstractNode
$this->processTraits($traits); $this->processTraits($traits);
$this->processFunctions($functions); $this->processFunctions($functions);
foreach (range(1, $this->linesOfCode->linesOfCode()) as $lineNumber) { foreach (range(1, $this->linesOfCode['linesOfCode']) as $lineNumber) {
if (isset($this->lineCoverageData[$lineNumber])) { if (isset($this->lineCoverageData[$lineNumber])) {
foreach ($this->codeUnitsByLine[$lineNumber] as &$codeUnit) { foreach ($this->codeUnitsByLine[$lineNumber] as &$codeUnit) {
$codeUnit['executableLines']++; $codeUnit['executableLines']++;
@ -473,7 +467,7 @@ final class File extends AbstractNode
} }
/** /**
* @param array<string, Class_> $classes * @param array<string, CodeUnitClassType> $classes
*/ */
private function processClasses(array $classes): void private function processClasses(array $classes): void
{ {
@ -482,9 +476,9 @@ final class File extends AbstractNode
foreach ($classes as $className => $class) { foreach ($classes as $className => $class) {
$this->classes[$className] = [ $this->classes[$className] = [
'className' => $className, 'className' => $className,
'namespace' => $class->namespace(), 'namespace' => $class['namespace'],
'methods' => [], 'methods' => [],
'startLine' => $class->startLine(), 'startLine' => $class['startLine'],
'executableLines' => 0, 'executableLines' => 0,
'executedLines' => 0, 'executedLines' => 0,
'executableBranches' => 0, 'executableBranches' => 0,
@ -494,11 +488,11 @@ final class File extends AbstractNode
'ccn' => 0, 'ccn' => 0,
'coverage' => 0, 'coverage' => 0,
'crap' => 0, 'crap' => 0,
'link' => $link . $class->startLine(), 'link' => $link . $class['startLine'],
]; ];
foreach ($class->methods() as $methodName => $method) { foreach ($class['methods'] as $methodName => $method) {
$methodData = $this->newMethod($className, $method, $link); $methodData = $this->newMethod($className, $methodName, $method, $link);
$this->classes[$className]['methods'][$methodName] = $methodData; $this->classes[$className]['methods'][$methodName] = $methodData;
$this->classes[$className]['executableBranches'] += $methodData['executableBranches']; $this->classes[$className]['executableBranches'] += $methodData['executableBranches'];
@ -511,7 +505,7 @@ final class File extends AbstractNode
$this->numExecutablePaths += $methodData['executablePaths']; $this->numExecutablePaths += $methodData['executablePaths'];
$this->numExecutedPaths += $methodData['executedPaths']; $this->numExecutedPaths += $methodData['executedPaths'];
foreach (range($method->startLine(), $method->endLine()) as $lineNumber) { foreach (range($method['startLine'], $method['endLine']) as $lineNumber) {
$this->codeUnitsByLine[$lineNumber] = [ $this->codeUnitsByLine[$lineNumber] = [
&$this->classes[$className], &$this->classes[$className],
&$this->classes[$className]['methods'][$methodName], &$this->classes[$className]['methods'][$methodName],
@ -522,7 +516,7 @@ final class File extends AbstractNode
} }
/** /**
* @param array<string, Trait_> $traits * @param array<string, CodeUnitTraitType> $traits
*/ */
private function processTraits(array $traits): void private function processTraits(array $traits): void
{ {
@ -531,9 +525,9 @@ final class File extends AbstractNode
foreach ($traits as $traitName => $trait) { foreach ($traits as $traitName => $trait) {
$this->traits[$traitName] = [ $this->traits[$traitName] = [
'traitName' => $traitName, 'traitName' => $traitName,
'namespace' => $trait->namespace(), 'namespace' => $trait['namespace'],
'methods' => [], 'methods' => [],
'startLine' => $trait->startLine(), 'startLine' => $trait['startLine'],
'executableLines' => 0, 'executableLines' => 0,
'executedLines' => 0, 'executedLines' => 0,
'executableBranches' => 0, 'executableBranches' => 0,
@ -543,11 +537,11 @@ final class File extends AbstractNode
'ccn' => 0, 'ccn' => 0,
'coverage' => 0, 'coverage' => 0,
'crap' => 0, 'crap' => 0,
'link' => $link . $trait->startLine(), 'link' => $link . $trait['startLine'],
]; ];
foreach ($trait->methods() as $methodName => $method) { foreach ($trait['methods'] as $methodName => $method) {
$methodData = $this->newMethod($traitName, $method, $link); $methodData = $this->newMethod($traitName, $methodName, $method, $link);
$this->traits[$traitName]['methods'][$methodName] = $methodData; $this->traits[$traitName]['methods'][$methodName] = $methodData;
$this->traits[$traitName]['executableBranches'] += $methodData['executableBranches']; $this->traits[$traitName]['executableBranches'] += $methodData['executableBranches'];
@ -560,7 +554,7 @@ final class File extends AbstractNode
$this->numExecutablePaths += $methodData['executablePaths']; $this->numExecutablePaths += $methodData['executablePaths'];
$this->numExecutedPaths += $methodData['executedPaths']; $this->numExecutedPaths += $methodData['executedPaths'];
foreach (range($method->startLine(), $method->endLine()) as $lineNumber) { foreach (range($method['startLine'], $method['endLine']) as $lineNumber) {
$this->codeUnitsByLine[$lineNumber] = [ $this->codeUnitsByLine[$lineNumber] = [
&$this->traits[$traitName], &$this->traits[$traitName],
&$this->traits[$traitName]['methods'][$methodName], &$this->traits[$traitName]['methods'][$methodName],
@ -571,7 +565,7 @@ final class File extends AbstractNode
} }
/** /**
* @param array<string, Function_> $functions * @param array<string, CodeUnitFunctionType> $functions
*/ */
private function processFunctions(array $functions): void private function processFunctions(array $functions): void
{ {
@ -580,23 +574,23 @@ final class File extends AbstractNode
foreach ($functions as $functionName => $function) { foreach ($functions as $functionName => $function) {
$this->functions[$functionName] = [ $this->functions[$functionName] = [
'functionName' => $functionName, 'functionName' => $functionName,
'namespace' => $function->namespace(), 'namespace' => $function['namespace'],
'signature' => $function->signature(), 'signature' => $function['signature'],
'startLine' => $function->startLine(), 'startLine' => $function['startLine'],
'endLine' => $function->endLine(), 'endLine' => $function['endLine'],
'executableLines' => 0, 'executableLines' => 0,
'executedLines' => 0, 'executedLines' => 0,
'executableBranches' => 0, 'executableBranches' => 0,
'executedBranches' => 0, 'executedBranches' => 0,
'executablePaths' => 0, 'executablePaths' => 0,
'executedPaths' => 0, 'executedPaths' => 0,
'ccn' => $function->cyclomaticComplexity(), 'ccn' => $function['ccn'],
'coverage' => 0, 'coverage' => 0,
'crap' => 0, 'crap' => 0,
'link' => $link . $function->startLine(), 'link' => $link . $function['startLine'],
]; ];
foreach (range($function->startLine(), $function->endLine()) as $lineNumber) { foreach (range($function['startLine'], $function['endLine']) as $lineNumber) {
$this->codeUnitsByLine[$lineNumber] = [&$this->functions[$functionName]]; $this->codeUnitsByLine[$lineNumber] = [&$this->functions[$functionName]];
} }
@ -640,29 +634,31 @@ final class File extends AbstractNode
} }
/** /**
* @param CodeUnitMethodType $method
*
* @return ProcessedMethodType * @return ProcessedMethodType
*/ */
private function newMethod(string $className, Method $method, string $link): array private function newMethod(string $className, string $methodName, array $method, string $link): array
{ {
$methodData = [ $methodData = [
'methodName' => $method->name(), 'methodName' => $methodName,
'visibility' => $method->visibility()->value, 'visibility' => $method['visibility'],
'signature' => $method->signature(), 'signature' => $method['signature'],
'startLine' => $method->startLine(), 'startLine' => $method['startLine'],
'endLine' => $method->endLine(), 'endLine' => $method['endLine'],
'executableLines' => 0, 'executableLines' => 0,
'executedLines' => 0, 'executedLines' => 0,
'executableBranches' => 0, 'executableBranches' => 0,
'executedBranches' => 0, 'executedBranches' => 0,
'executablePaths' => 0, 'executablePaths' => 0,
'executedPaths' => 0, 'executedPaths' => 0,
'ccn' => $method->cyclomaticComplexity(), 'ccn' => $method['ccn'],
'coverage' => 0, 'coverage' => 0,
'crap' => 0, 'crap' => 0,
'link' => $link . $method->startLine(), 'link' => $link . $method['startLine'],
]; ];
$key = $className . '->' . $method->name(); $key = $className . '->' . $methodName;
if (isset($this->functionCoverageData[$key]['branches'])) { if (isset($this->functionCoverageData[$key]['branches'])) {
$methodData['executableBranches'] = count( $methodData['executableBranches'] = count(

View File

@ -9,13 +9,10 @@
*/ */
namespace SebastianBergmann\CodeCoverage\Node; namespace SebastianBergmann\CodeCoverage\Node;
use function assert;
use function count; use function count;
use RecursiveIterator; use RecursiveIterator;
/** /**
* @template-implements RecursiveIterator<int, AbstractNode>
*
* @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage
*/ */
final class Iterator implements RecursiveIterator final class Iterator implements RecursiveIterator
@ -32,38 +29,57 @@ final class Iterator implements RecursiveIterator
$this->nodes = $node->children(); $this->nodes = $node->children();
} }
/**
* Rewinds the Iterator to the first element.
*/
public function rewind(): void public function rewind(): void
{ {
$this->position = 0; $this->position = 0;
} }
/**
* Checks if there is a current element after calls to rewind() or next().
*/
public function valid(): bool public function valid(): bool
{ {
return $this->position < count($this->nodes); return $this->position < count($this->nodes);
} }
/**
* Returns the key of the current element.
*/
public function key(): int public function key(): int
{ {
return $this->position; return $this->position;
} }
/**
* Returns the current element.
*/
public function current(): ?AbstractNode public function current(): ?AbstractNode
{ {
return $this->valid() ? $this->nodes[$this->position] : null; return $this->valid() ? $this->nodes[$this->position] : null;
} }
/**
* Moves forward to next element.
*/
public function next(): void public function next(): void
{ {
$this->position++; $this->position++;
} }
/**
* Returns the sub iterator for the current element.
*/
public function getChildren(): self public function getChildren(): self
{ {
assert($this->nodes[$this->position] instanceof Directory);
return new self($this->nodes[$this->position]); return new self($this->nodes[$this->position]);
} }
/**
* Checks whether the current element has children.
*/
public function hasChildren(): bool public function hasChildren(): bool
{ {
return $this->nodes[$this->position] instanceof Directory; return $this->nodes[$this->position] instanceof Directory;

View File

@ -168,8 +168,8 @@ final class Clover
$linesOfCode = $item->linesOfCode(); $linesOfCode = $item->linesOfCode();
$xmlMetrics = $xmlDocument->createElement('metrics'); $xmlMetrics = $xmlDocument->createElement('metrics');
$xmlMetrics->setAttribute('loc', (string) $linesOfCode->linesOfCode()); $xmlMetrics->setAttribute('loc', (string) $linesOfCode['linesOfCode']);
$xmlMetrics->setAttribute('ncloc', (string) $linesOfCode->nonCommentLinesOfCode()); $xmlMetrics->setAttribute('ncloc', (string) $linesOfCode['nonCommentLinesOfCode']);
$xmlMetrics->setAttribute('classes', (string) $item->numberOfClassesAndTraits()); $xmlMetrics->setAttribute('classes', (string) $item->numberOfClassesAndTraits());
$xmlMetrics->setAttribute('methods', (string) $item->numberOfMethods()); $xmlMetrics->setAttribute('methods', (string) $item->numberOfMethods());
$xmlMetrics->setAttribute('coveredmethods', (string) $item->numberOfTestedMethods()); $xmlMetrics->setAttribute('coveredmethods', (string) $item->numberOfTestedMethods());
@ -201,8 +201,8 @@ final class Clover
$xmlMetrics = $xmlDocument->createElement('metrics'); $xmlMetrics = $xmlDocument->createElement('metrics');
$xmlMetrics->setAttribute('files', (string) count($report)); $xmlMetrics->setAttribute('files', (string) count($report));
$xmlMetrics->setAttribute('loc', (string) $linesOfCode->linesOfCode()); $xmlMetrics->setAttribute('loc', (string) $linesOfCode['linesOfCode']);
$xmlMetrics->setAttribute('ncloc', (string) $linesOfCode->nonCommentLinesOfCode()); $xmlMetrics->setAttribute('ncloc', (string) $linesOfCode['nonCommentLinesOfCode']);
$xmlMetrics->setAttribute('classes', (string) $report->numberOfClassesAndTraits()); $xmlMetrics->setAttribute('classes', (string) $report->numberOfClassesAndTraits());
$xmlMetrics->setAttribute('methods', (string) $report->numberOfMethods()); $xmlMetrics->setAttribute('methods', (string) $report->numberOfMethods());
$xmlMetrics->setAttribute('coveredmethods', (string) $report->numberOfTestedMethods()); $xmlMetrics->setAttribute('coveredmethods', (string) $report->numberOfTestedMethods());

View File

@ -153,7 +153,7 @@ final class Cobertura
$linesValid = $method['executableLines']; $linesValid = $method['executableLines'];
$linesCovered = $method['executedLines']; $linesCovered = $method['executedLines'];
$lineRate = $linesCovered / $linesValid; $lineRate = $linesValid === 0 ? 0 : ($linesCovered / $linesValid);
$branchesValid = $method['executableBranches']; $branchesValid = $method['executableBranches'];
$branchesCovered = $method['executedBranches']; $branchesCovered = $method['executedBranches'];
@ -228,7 +228,7 @@ final class Cobertura
$linesValid = $function['executableLines']; $linesValid = $function['executableLines'];
$linesCovered = $function['executedLines']; $linesCovered = $function['executedLines'];
$lineRate = $linesCovered / $linesValid; $lineRate = $linesValid === 0 ? 0 : ($linesCovered / $linesValid);
$functionsLinesValid += $linesValid; $functionsLinesValid += $linesValid;
$functionsLinesCovered += $linesCovered; $functionsLinesCovered += $linesCovered;

View File

@ -22,9 +22,9 @@ use SebastianBergmann\CodeCoverage\Driver\WriteOperationFailedException;
use SebastianBergmann\CodeCoverage\Node\File; use SebastianBergmann\CodeCoverage\Node\File;
use SebastianBergmann\CodeCoverage\Util\Filesystem; use SebastianBergmann\CodeCoverage\Util\Filesystem;
final readonly class Crap4j final class Crap4j
{ {
private int $threshold; private readonly int $threshold;
public function __construct(int $threshold = 30) public function __construct(int $threshold = 30)
{ {

View File

@ -12,13 +12,13 @@ namespace SebastianBergmann\CodeCoverage\Report\Html;
/** /**
* @immutable * @immutable
*/ */
final readonly class Colors final class Colors
{ {
private string $successLow; private readonly string $successLow;
private string $successMedium; private readonly string $successMedium;
private string $successHigh; private readonly string $successHigh;
private string $warning; private readonly string $warning;
private string $danger; private readonly string $danger;
public static function default(): self public static function default(): self
{ {

View File

@ -15,9 +15,9 @@ use SebastianBergmann\CodeCoverage\InvalidArgumentException;
/** /**
* @immutable * @immutable
*/ */
final readonly class CustomCssFile final class CustomCssFile
{ {
private string $path; private readonly string $path;
public static function default(): self public static function default(): self
{ {

View File

@ -22,13 +22,13 @@ use SebastianBergmann\CodeCoverage\Util\Filesystem;
use SebastianBergmann\Template\Exception; use SebastianBergmann\Template\Exception;
use SebastianBergmann\Template\Template; use SebastianBergmann\Template\Template;
final readonly class Facade final class Facade
{ {
private string $templatePath; private readonly string $templatePath;
private string $generator; private readonly string $generator;
private Colors $colors; private readonly Colors $colors;
private Thresholds $thresholds; private readonly Thresholds $thresholds;
private CustomCssFile $customCssFile; private readonly CustomCssFile $customCssFile;
public function __construct(string $generator = '', ?Colors $colors = null, ?Thresholds $thresholds = null, ?CustomCssFile $customCssFile = null) public function __construct(string $generator = '', ?Colors $colors = null, ?Thresholds $thresholds = null, ?CustomCssFile $customCssFile = null)
{ {

View File

@ -44,9 +44,6 @@ abstract class Renderer
$this->hasBranchCoverage = $hasBranchCoverage; $this->hasBranchCoverage = $hasBranchCoverage;
} }
/**
* @param array<non-empty-string, float|int|string> $data
*/
protected function renderItemTemplate(Template $template, array $data): string protected function renderItemTemplate(Template $template, array $data): string
{ {
$numSeparator = '&nbsp;/&nbsp;'; $numSeparator = '&nbsp;/&nbsp;';
@ -174,8 +171,8 @@ abstract class Renderer
'version' => $this->version, 'version' => $this->version,
'runtime' => $this->runtimeString(), 'runtime' => $this->runtimeString(),
'generator' => $this->generator, 'generator' => $this->generator,
'low_upper_bound' => (string) $this->thresholds->lowUpperBound(), 'low_upper_bound' => $this->thresholds->lowUpperBound(),
'high_lower_bound' => (string) $this->thresholds->highLowerBound(), 'high_lower_bound' => $this->thresholds->highLowerBound(),
], ],
); );
} }

View File

@ -12,7 +12,6 @@ namespace SebastianBergmann\CodeCoverage\Report\Html;
use function array_values; use function array_values;
use function arsort; use function arsort;
use function asort; use function asort;
use function assert;
use function count; use function count;
use function explode; use function explode;
use function floor; use function floor;
@ -22,14 +21,10 @@ use function str_replace;
use SebastianBergmann\CodeCoverage\FileCouldNotBeWrittenException; use SebastianBergmann\CodeCoverage\FileCouldNotBeWrittenException;
use SebastianBergmann\CodeCoverage\Node\AbstractNode; use SebastianBergmann\CodeCoverage\Node\AbstractNode;
use SebastianBergmann\CodeCoverage\Node\Directory as DirectoryNode; use SebastianBergmann\CodeCoverage\Node\Directory as DirectoryNode;
use SebastianBergmann\CodeCoverage\Node\File as FileNode;
use SebastianBergmann\Template\Exception; use SebastianBergmann\Template\Exception;
use SebastianBergmann\Template\Template; use SebastianBergmann\Template\Template;
/** /**
* @phpstan-import-type ProcessedClassType from FileNode
* @phpstan-import-type ProcessedTraitType from FileNode
*
* @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage
*/ */
final class Dashboard extends Renderer final class Dashboard extends Renderer
@ -86,9 +81,7 @@ final class Dashboard extends Renderer
} }
/** /**
* @param array<string, ProcessedClassType|ProcessedTraitType> $classes * Returns the data for the Class/Method Complexity charts.
*
* @return array{class: non-empty-string, method: non-empty-string}
*/ */
private function complexity(array $classes, string $baseLink): array private function complexity(array $classes, string $baseLink): array
{ {
@ -122,21 +115,14 @@ final class Dashboard extends Renderer
]; ];
} }
$class = json_encode($result['class']); return [
'class' => json_encode($result['class']),
assert($class !== false); 'method' => json_encode($result['method']),
];
$method = json_encode($result['method']);
assert($method !== false);
return ['class' => $class, 'method' => $method];
} }
/** /**
* @param array<string, ProcessedClassType|ProcessedTraitType> $classes * Returns the data for the Class / Method Coverage Distribution chart.
*
* @return array{class: non-empty-string, method: non-empty-string}
*/ */
private function coverageDistribution(array $classes): array private function coverageDistribution(array $classes): array
{ {
@ -195,21 +181,14 @@ final class Dashboard extends Renderer
} }
} }
$class = json_encode(array_values($result['class'])); return [
'class' => json_encode(array_values($result['class'])),
assert($class !== false); 'method' => json_encode(array_values($result['method'])),
];
$method = json_encode(array_values($result['method']));
assert($method !== false);
return ['class' => $class, 'method' => $method];
} }
/** /**
* @param array<string, ProcessedClassType|ProcessedTraitType> $classes * Returns the classes / methods with insufficient coverage.
*
* @return array{class: string, method: string}
*/ */
private function insufficientCoverage(array $classes, string $baseLink): array private function insufficientCoverage(array $classes, string $baseLink): array
{ {
@ -263,9 +242,7 @@ final class Dashboard extends Renderer
} }
/** /**
* @param array<string, ProcessedClassType|ProcessedTraitType> $classes * Returns the project risks according to the CRAP index.
*
* @return array{class: string, method: string}
*/ */
private function projectRisks(array $classes, string $baseLink): array private function projectRisks(array $classes, string $baseLink): array
{ {

View File

@ -108,11 +108,6 @@ use SebastianBergmann\Template\Exception;
use SebastianBergmann\Template\Template; use SebastianBergmann\Template\Template;
/** /**
* @phpstan-import-type ProcessedClassType from FileNode
* @phpstan-import-type ProcessedTraitType from FileNode
* @phpstan-import-type ProcessedMethodType from FileNode
* @phpstan-import-type ProcessedFunctionType from FileNode
*
* @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage
*/ */
final class File extends Renderer final class File extends Renderer
@ -120,7 +115,7 @@ final class File extends Renderer
/** /**
* @var array<int,true> * @var array<int,true>
*/ */
private const array KEYWORD_TOKENS = [ private const KEYWORD_TOKENS = [
T_ABSTRACT => true, T_ABSTRACT => true,
T_ARRAY => true, T_ARRAY => true,
T_AS => true, T_AS => true,
@ -190,13 +185,8 @@ final class File extends Renderer
T_YIELD => true, T_YIELD => true,
T_YIELD_FROM => true, T_YIELD_FROM => true,
]; ];
private const int HTML_SPECIAL_CHARS_FLAGS = ENT_COMPAT | ENT_HTML401 | ENT_SUBSTITUTE;
/**
* @var array<non-empty-string, list<string>>
*/
private static array $formattedSourceCache = []; private static array $formattedSourceCache = [];
private int $htmlSpecialCharsFlags = ENT_COMPAT | ENT_HTML401 | ENT_SUBSTITUTE;
public function render(FileNode $node, string $file): void public function render(FileNode $node, string $file): void
{ {
@ -324,9 +314,6 @@ final class File extends Renderer
return $items; return $items;
} }
/**
* @param array<string, ProcessedClassType|ProcessedTraitType> $items
*/
private function renderTraitOrClassItems(array $items, Template $template, Template $methodItemTemplate): string private function renderTraitOrClassItems(array $items, Template $template, Template $methodItemTemplate): string
{ {
$buffer = ''; $buffer = '';
@ -431,9 +418,6 @@ final class File extends Renderer
return $buffer; return $buffer;
} }
/**
* @param array<string, ProcessedFunctionType> $functions
*/
private function renderFunctionItems(array $functions, Template $template): string private function renderFunctionItems(array $functions, Template $template): string
{ {
if (empty($functions)) { if (empty($functions)) {
@ -452,9 +436,6 @@ final class File extends Renderer
return $buffer; return $buffer;
} }
/**
* @param ProcessedFunctionType|ProcessedMethodType $item
*/
private function renderFunctionOrMethodItem(Template $template, array $item, string $indent = ''): string private function renderFunctionOrMethodItem(Template $template, array $item, string $indent = ''): string
{ {
$numMethods = 0; $numMethods = 0;
@ -495,7 +476,7 @@ final class File extends Renderer
'%s<a href="#%d"><abbr title="%s">%s</abbr></a>', '%s<a href="#%d"><abbr title="%s">%s</abbr></a>',
$indent, $indent,
$item['startLine'], $item['startLine'],
htmlspecialchars($item['signature'], self::HTML_SPECIAL_CHARS_FLAGS), htmlspecialchars($item['signature'], $this->htmlSpecialCharsFlags),
$item['functionName'] ?? $item['methodName'], $item['functionName'] ?? $item['methodName'],
), ),
'numMethods' => $numMethods, 'numMethods' => $numMethods,
@ -573,7 +554,7 @@ final class File extends Renderer
$popover = sprintf( $popover = sprintf(
' data-bs-title="%s" data-bs-content="%s" data-bs-placement="top" data-bs-html="true"', ' data-bs-title="%s" data-bs-content="%s" data-bs-placement="top" data-bs-html="true"',
$popoverTitle, $popoverTitle,
htmlspecialchars($popoverContent, self::HTML_SPECIAL_CHARS_FLAGS), htmlspecialchars($popoverContent, $this->htmlSpecialCharsFlags),
); );
} }
@ -660,7 +641,7 @@ final class File extends Renderer
$popover = sprintf( $popover = sprintf(
' data-bs-title="%s" data-bs-content="%s" data-bs-placement="top" data-bs-html="true"', ' data-bs-title="%s" data-bs-content="%s" data-bs-placement="top" data-bs-html="true"',
$popoverTitle, $popoverTitle,
htmlspecialchars($popoverContent, self::HTML_SPECIAL_CHARS_FLAGS), htmlspecialchars($popoverContent, $this->htmlSpecialCharsFlags),
); );
} }
@ -750,7 +731,7 @@ final class File extends Renderer
$popover = sprintf( $popover = sprintf(
' data-bs-title="%s" data-bs-content="%s" data-bs-placement="top" data-bs-html="true"', ' data-bs-title="%s" data-bs-content="%s" data-bs-placement="top" data-bs-html="true"',
$popoverTitle, $popoverTitle,
htmlspecialchars($popoverContent, self::HTML_SPECIAL_CHARS_FLAGS), htmlspecialchars($popoverContent, $this->htmlSpecialCharsFlags),
); );
} }
@ -787,7 +768,7 @@ final class File extends Renderer
} }
if ($branchStructure !== '') { // don't show empty branches if ($branchStructure !== '') { // don't show empty branches
$branches .= '<h5 class="structure-heading"><a name="' . htmlspecialchars($methodName, self::HTML_SPECIAL_CHARS_FLAGS) . '">' . $this->abbreviateMethodName($methodName) . '</a></h5>' . "\n"; $branches .= '<h5 class="structure-heading"><a name="' . htmlspecialchars($methodName, $this->htmlSpecialCharsFlags) . '">' . $this->abbreviateMethodName($methodName) . '</a></h5>' . "\n";
$branches .= $branchStructure; $branches .= $branchStructure;
} }
} }
@ -797,9 +778,6 @@ final class File extends Renderer
return $branchesTemplate->render(); return $branchesTemplate->render();
} }
/**
* @param list<string> $codeLines
*/
private function renderBranchLines(array $branch, array $codeLines, array $testData): string private function renderBranchLines(array $branch, array $codeLines, array $testData): string
{ {
$linesTemplate = new Template($this->templatePath . 'lines.html.dist', '{{', '}}'); $linesTemplate = new Template($this->templatePath . 'lines.html.dist', '{{', '}}');
@ -851,7 +829,7 @@ final class File extends Renderer
$popover = sprintf( $popover = sprintf(
' data-bs-title="%s" data-bs-content="%s" data-bs-placement="top" data-bs-html="true"', ' data-bs-title="%s" data-bs-content="%s" data-bs-placement="top" data-bs-html="true"',
$popoverTitle, $popoverTitle,
htmlspecialchars($popoverContent, self::HTML_SPECIAL_CHARS_FLAGS), htmlspecialchars($popoverContent, $this->htmlSpecialCharsFlags),
); );
} }
@ -896,7 +874,7 @@ final class File extends Renderer
} }
if ($pathStructure !== '') { if ($pathStructure !== '') {
$paths .= '<h5 class="structure-heading"><a name="' . htmlspecialchars($methodName, self::HTML_SPECIAL_CHARS_FLAGS) . '">' . $this->abbreviateMethodName($methodName) . '</a></h5>' . "\n"; $paths .= '<h5 class="structure-heading"><a name="' . htmlspecialchars($methodName, $this->htmlSpecialCharsFlags) . '">' . $this->abbreviateMethodName($methodName) . '</a></h5>' . "\n";
$paths .= $pathStructure; $paths .= $pathStructure;
} }
} }
@ -906,9 +884,6 @@ final class File extends Renderer
return $pathsTemplate->render(); return $pathsTemplate->render();
} }
/**
* @param list<string> $codeLines
*/
private function renderPathLines(array $path, array $branches, array $codeLines, array $testData): string private function renderPathLines(array $path, array $branches, array $codeLines, array $testData): string
{ {
$linesTemplate = new Template($this->templatePath . 'lines.html.dist', '{{', '}}'); $linesTemplate = new Template($this->templatePath . 'lines.html.dist', '{{', '}}');
@ -969,7 +944,7 @@ final class File extends Renderer
$popover = sprintf( $popover = sprintf(
' data-bs-title="%s" data-bs-content="%s" data-bs-placement="top" data-bs-html="true"', ' data-bs-title="%s" data-bs-content="%s" data-bs-placement="top" data-bs-html="true"',
$popoverTitle, $popoverTitle,
htmlspecialchars($popoverContent, self::HTML_SPECIAL_CHARS_FLAGS), htmlspecialchars($popoverContent, $this->htmlSpecialCharsFlags),
); );
} }
@ -990,7 +965,7 @@ final class File extends Renderer
{ {
$template->setVar( $template->setVar(
[ [
'lineNumber' => (string) $lineNumber, 'lineNumber' => $lineNumber,
'lineContent' => $lineContent, 'lineContent' => $lineContent,
'class' => $class, 'class' => $class,
'popover' => $popover, 'popover' => $popover,
@ -1000,11 +975,6 @@ final class File extends Renderer
return $template->render(); return $template->render();
} }
/**
* @param non-empty-string $file
*
* @return list<string>
*/
private function loadFile(string $file): array private function loadFile(string $file): array
{ {
if (isset(self::$formattedSourceCache[$file])) { if (isset(self::$formattedSourceCache[$file])) {
@ -1025,14 +995,14 @@ final class File extends Renderer
if ($token === '"' && $tokens[$j - 1] !== '\\') { if ($token === '"' && $tokens[$j - 1] !== '\\') {
$result[$i] .= sprintf( $result[$i] .= sprintf(
'<span class="string">%s</span>', '<span class="string">%s</span>',
htmlspecialchars($token, self::HTML_SPECIAL_CHARS_FLAGS), htmlspecialchars($token, $this->htmlSpecialCharsFlags),
); );
$stringFlag = !$stringFlag; $stringFlag = !$stringFlag;
} else { } else {
$result[$i] .= sprintf( $result[$i] .= sprintf(
'<span class="keyword">%s</span>', '<span class="keyword">%s</span>',
htmlspecialchars($token, self::HTML_SPECIAL_CHARS_FLAGS), htmlspecialchars($token, $this->htmlSpecialCharsFlags),
); );
} }
@ -1044,7 +1014,7 @@ final class File extends Renderer
$value = str_replace( $value = str_replace(
["\t", ' '], ["\t", ' '],
['&nbsp;&nbsp;&nbsp;&nbsp;', '&nbsp;'], ['&nbsp;&nbsp;&nbsp;&nbsp;', '&nbsp;'],
htmlspecialchars($value, self::HTML_SPECIAL_CHARS_FLAGS), htmlspecialchars($value, $this->htmlSpecialCharsFlags),
); );
if ($value === "\n") { if ($value === "\n") {
@ -1143,7 +1113,7 @@ final class File extends Renderer
return sprintf( return sprintf(
'<li%s>%s</li>', '<li%s>%s</li>',
$testCSS, $testCSS,
htmlspecialchars($test, self::HTML_SPECIAL_CHARS_FLAGS), htmlspecialchars($test, $this->htmlSpecialCharsFlags),
); );
} }

View File

@ -26,27 +26,27 @@ final class Text
/** /**
* @var string * @var string
*/ */
private const string COLOR_GREEN = "\x1b[30;42m"; private const COLOR_GREEN = "\x1b[30;42m";
/** /**
* @var string * @var string
*/ */
private const string COLOR_YELLOW = "\x1b[30;43m"; private const COLOR_YELLOW = "\x1b[30;43m";
/** /**
* @var string * @var string
*/ */
private const string COLOR_RED = "\x1b[37;41m"; private const COLOR_RED = "\x1b[37;41m";
/** /**
* @var string * @var string
*/ */
private const string COLOR_HEADER = "\x1b[1;37;40m"; private const COLOR_HEADER = "\x1b[1;37;40m";
/** /**
* @var string * @var string
*/ */
private const string COLOR_RESET = "\x1b[0m"; private const COLOR_RESET = "\x1b[0m";
private readonly Thresholds $thresholds; private readonly Thresholds $thresholds;
private readonly bool $showUncoveredFiles; private readonly bool $showUncoveredFiles;
private readonly bool $showOnlySummary; private readonly bool $showOnlySummary;

View File

@ -14,10 +14,10 @@ use SebastianBergmann\CodeCoverage\InvalidArgumentException;
/** /**
* @immutable * @immutable
*/ */
final readonly class Thresholds final class Thresholds
{ {
private int $lowUpperBound; private readonly int $lowUpperBound;
private int $highLowerBound; private readonly int $highLowerBound;
public static function default(): self public static function default(): self
{ {

View File

@ -18,9 +18,9 @@ use SebastianBergmann\Environment\Runtime;
/** /**
* @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage
*/ */
final readonly class BuildInformation final class BuildInformation
{ {
private DOMElement $contextNode; private readonly DOMElement $contextNode;
public function __construct(DOMElement $contextNode) public function __construct(DOMElement $contextNode)
{ {

View File

@ -32,19 +32,12 @@ use SebastianBergmann\CodeCoverage\Driver\PathExistsButIsNotDirectoryException;
use SebastianBergmann\CodeCoverage\Driver\WriteOperationFailedException; use SebastianBergmann\CodeCoverage\Driver\WriteOperationFailedException;
use SebastianBergmann\CodeCoverage\Node\AbstractNode; use SebastianBergmann\CodeCoverage\Node\AbstractNode;
use SebastianBergmann\CodeCoverage\Node\Directory as DirectoryNode; use SebastianBergmann\CodeCoverage\Node\Directory as DirectoryNode;
use SebastianBergmann\CodeCoverage\Node\File;
use SebastianBergmann\CodeCoverage\Node\File as FileNode; use SebastianBergmann\CodeCoverage\Node\File as FileNode;
use SebastianBergmann\CodeCoverage\Util\Filesystem as DirectoryUtil; use SebastianBergmann\CodeCoverage\Util\Filesystem as DirectoryUtil;
use SebastianBergmann\CodeCoverage\Version; use SebastianBergmann\CodeCoverage\Version;
use SebastianBergmann\CodeCoverage\XmlException; use SebastianBergmann\CodeCoverage\XmlException;
use SebastianBergmann\Environment\Runtime; use SebastianBergmann\Environment\Runtime;
/**
* @phpstan-import-type ProcessedClassType from File
* @phpstan-import-type ProcessedTraitType from File
* @phpstan-import-type ProcessedFunctionType from File
* @phpstan-import-type TestType from CodeCoverage
*/
final class Facade final class Facade
{ {
private string $target; private string $target;
@ -182,9 +175,6 @@ final class Facade
$this->saveDocument($fileReport->asDom(), $file->id()); $this->saveDocument($fileReport->asDom(), $file->id());
} }
/**
* @param ProcessedClassType|ProcessedTraitType $unit
*/
private function processUnit(array $unit, Report $report): void private function processUnit(array $unit, Report $report): void
{ {
if (isset($unit['className'])) { if (isset($unit['className'])) {
@ -215,9 +205,6 @@ final class Facade
} }
} }
/**
* @param ProcessedFunctionType $function
*/
private function processFunction(array $function, Report $report): void private function processFunction(array $function, Report $report): void
{ {
$functionObject = $report->functionObject($function['functionName']); $functionObject = $report->functionObject($function['functionName']);
@ -228,9 +215,6 @@ final class Facade
$functionObject->setTotals((string) $function['executableLines'], (string) $function['executedLines'], (string) $function['coverage']); $functionObject->setTotals((string) $function['executableLines'], (string) $function['executedLines'], (string) $function['coverage']);
} }
/**
* @param array<string, TestType> $tests
*/
private function processTests(array $tests): void private function processTests(array $tests): void
{ {
$testsObject = $this->project->tests(); $testsObject = $this->project->tests();
@ -245,9 +229,9 @@ final class Facade
$loc = $node->linesOfCode(); $loc = $node->linesOfCode();
$totals->setNumLines( $totals->setNumLines(
$loc->linesOfCode(), $loc['linesOfCode'],
$loc->commentLinesOfCode(), $loc['commentLinesOfCode'],
$loc->nonCommentLinesOfCode(), $loc['nonCommentLinesOfCode'],
$node->numberOfExecutableLines(), $node->numberOfExecutableLines(),
$node->numberOfExecutedLines(), $node->numberOfExecutedLines(),
); );

View File

@ -9,7 +9,6 @@
*/ */
namespace SebastianBergmann\CodeCoverage\Report\Xml; namespace SebastianBergmann\CodeCoverage\Report\Xml;
use function assert;
use DOMDocument; use DOMDocument;
use DOMElement; use DOMElement;
@ -40,8 +39,6 @@ class File
); );
} }
assert($totalsContainer instanceof DOMElement);
return new Totals($totalsContainer); return new Totals($totalsContainer);
} }
@ -68,8 +65,6 @@ class File
), ),
); );
assert($lineNode instanceof DOMElement);
return new Coverage($lineNode, $line); return new Coverage($lineNode, $line);
} }

View File

@ -14,9 +14,9 @@ use DOMElement;
/** /**
* @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage
*/ */
final readonly class Method final class Method
{ {
private DOMElement $contextNode; private readonly DOMElement $contextNode;
public function __construct(DOMElement $context, string $name) public function __construct(DOMElement $context, string $name)
{ {

View File

@ -9,7 +9,6 @@
*/ */
namespace SebastianBergmann\CodeCoverage\Report\Xml; namespace SebastianBergmann\CodeCoverage\Report\Xml;
use function assert;
use DOMDocument; use DOMDocument;
use DOMElement; use DOMElement;
@ -44,8 +43,6 @@ abstract class Node
); );
} }
assert($totalsContainer instanceof DOMElement);
return new Totals($totalsContainer); return new Totals($totalsContainer);
} }

View File

@ -9,9 +9,7 @@
*/ */
namespace SebastianBergmann\CodeCoverage\Report\Xml; namespace SebastianBergmann\CodeCoverage\Report\Xml;
use function assert;
use DOMDocument; use DOMDocument;
use DOMElement;
/** /**
* @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage
@ -45,8 +43,6 @@ final class Project extends Node
); );
} }
assert($buildNode instanceof DOMElement);
return new BuildInformation($buildNode); return new BuildInformation($buildNode);
} }
@ -66,8 +62,6 @@ final class Project extends Node
); );
} }
assert($testsNode instanceof DOMElement);
return new Tests($testsNode); return new Tests($testsNode);
} }

View File

@ -9,11 +9,9 @@
*/ */
namespace SebastianBergmann\CodeCoverage\Report\Xml; namespace SebastianBergmann\CodeCoverage\Report\Xml;
use function assert;
use function basename; use function basename;
use function dirname; use function dirname;
use DOMDocument; use DOMDocument;
use DOMElement;
/** /**
* @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage
@ -40,7 +38,7 @@ final class Report extends File
return $this->dom(); return $this->dom();
} }
public function functionObject(string $name): Method public function functionObject($name): Method
{ {
$node = $this->contextNode()->appendChild( $node = $this->contextNode()->appendChild(
$this->dom()->createElementNS( $this->dom()->createElementNS(
@ -49,17 +47,15 @@ final class Report extends File
), ),
); );
assert($node instanceof DOMElement);
return new Method($node, $name); return new Method($node, $name);
} }
public function classObject(string $name): Unit public function classObject($name): Unit
{ {
return $this->unitObject('class', $name); return $this->unitObject('class', $name);
} }
public function traitObject(string $name): Unit public function traitObject($name): Unit
{ {
return $this->unitObject('trait', $name); return $this->unitObject('trait', $name);
} }
@ -80,8 +76,6 @@ final class Report extends File
); );
} }
assert($source instanceof DOMElement);
return new Source($source); return new Source($source);
} }
@ -91,7 +85,7 @@ final class Report extends File
$this->contextNode()->setAttribute('path', dirname($name)); $this->contextNode()->setAttribute('path', dirname($name));
} }
private function unitObject(string $tagName, string $name): Unit private function unitObject(string $tagName, $name): Unit
{ {
$node = $this->contextNode()->appendChild( $node = $this->contextNode()->appendChild(
$this->dom()->createElementNS( $this->dom()->createElementNS(
@ -100,8 +94,6 @@ final class Report extends File
), ),
); );
assert($node instanceof DOMElement);
return new Unit($node, $name); return new Unit($node, $name);
} }
} }

View File

@ -17,9 +17,9 @@ use TheSeer\Tokenizer\XMLSerializer;
/** /**
* @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage
*/ */
final readonly class Source final class Source
{ {
private DOMElement $context; private readonly DOMElement $context;
public function __construct(DOMElement $context) public function __construct(DOMElement $context)
{ {

View File

@ -11,16 +11,15 @@ namespace SebastianBergmann\CodeCoverage\Report\Xml;
use function assert; use function assert;
use DOMElement; use DOMElement;
use SebastianBergmann\CodeCoverage\CodeCoverage;
/** /**
* @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage
* *
* @phpstan-import-type TestType from CodeCoverage * @phpstan-import-type TestType from \SebastianBergmann\CodeCoverage\CodeCoverage
*/ */
final readonly class Tests final class Tests
{ {
private DOMElement $contextNode; private readonly DOMElement $contextNode;
public function __construct(DOMElement $context) public function __construct(DOMElement $context)
{ {

View File

@ -17,14 +17,14 @@ use SebastianBergmann\CodeCoverage\Util\Percentage;
/** /**
* @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage
*/ */
final readonly class Totals final class Totals
{ {
private DOMNode $container; private readonly DOMNode $container;
private DOMElement $linesNode; private readonly DOMElement $linesNode;
private DOMElement $methodsNode; private readonly DOMElement $methodsNode;
private DOMElement $functionsNode; private readonly DOMElement $functionsNode;
private DOMElement $classesNode; private readonly DOMElement $classesNode;
private DOMElement $traitsNode; private readonly DOMElement $traitsNode;
public function __construct(DOMElement $container) public function __construct(DOMElement $container)
{ {

View File

@ -15,9 +15,9 @@ use DOMElement;
/** /**
* @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage
*/ */
final readonly class Unit final class Unit
{ {
private DOMElement $contextNode; private readonly DOMElement $contextNode;
public function __construct(DOMElement $context, string $name) public function __construct(DOMElement $context, string $name)
{ {
@ -68,8 +68,6 @@ final readonly class Unit
), ),
); );
assert($node instanceof DOMElement);
return new Method($node, $name); return new Method($node, $name);
} }

View File

@ -23,17 +23,12 @@ use SebastianBergmann\FileIterator\Facade as FileIteratorFacade;
/** /**
* @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage
* *
* @phpstan-type CachedDataForFile array{ * @phpstan-import-type CodeUnitFunctionType from \SebastianBergmann\CodeCoverage\StaticAnalysis\CodeUnitFindingVisitor
* interfacesIn: array<string, Interface_>, * @phpstan-import-type CodeUnitMethodType from \SebastianBergmann\CodeCoverage\StaticAnalysis\CodeUnitFindingVisitor
* classesIn: array<string, Class_>, * @phpstan-import-type CodeUnitClassType from \SebastianBergmann\CodeCoverage\StaticAnalysis\CodeUnitFindingVisitor
* traitsIn: array<string, Trait_>, * @phpstan-import-type CodeUnitTraitType from \SebastianBergmann\CodeCoverage\StaticAnalysis\CodeUnitFindingVisitor
* functionsIn: array<string, Function_>, * @phpstan-import-type LinesOfCodeType from \SebastianBergmann\CodeCoverage\StaticAnalysis\FileAnalyser
* linesOfCodeFor: LinesOfCode, * @phpstan-import-type LinesType from \SebastianBergmann\CodeCoverage\StaticAnalysis\FileAnalyser
* ignoredLinesFor: LinesType,
* executableLinesIn: LinesType
* }
*
* @phpstan-import-type LinesType from FileAnalyser
*/ */
final class CachingFileAnalyser implements FileAnalyser final class CachingFileAnalyser implements FileAnalyser
{ {
@ -42,10 +37,6 @@ final class CachingFileAnalyser implements FileAnalyser
private readonly FileAnalyser $analyser; private readonly FileAnalyser $analyser;
private readonly bool $useAnnotationsForIgnoringCode; private readonly bool $useAnnotationsForIgnoringCode;
private readonly bool $ignoreDeprecatedCode; private readonly bool $ignoreDeprecatedCode;
/**
* @var array<non-empty-string, CachedDataForFile>
*/
private array $cache = []; private array $cache = [];
public function __construct(string $directory, FileAnalyser $analyser, bool $useAnnotationsForIgnoringCode, bool $ignoreDeprecatedCode) public function __construct(string $directory, FileAnalyser $analyser, bool $useAnnotationsForIgnoringCode, bool $ignoreDeprecatedCode)
@ -59,19 +50,7 @@ final class CachingFileAnalyser implements FileAnalyser
} }
/** /**
* @return array<string, Interface_> * @return array<string, CodeUnitClassType>
*/
public function interfacesIn(string $filename): array
{
if (!isset($this->cache[$filename])) {
$this->process($filename);
}
return $this->cache[$filename]['interfacesIn'];
}
/**
* @return array<string, Class_>
*/ */
public function classesIn(string $filename): array public function classesIn(string $filename): array
{ {
@ -83,7 +62,7 @@ final class CachingFileAnalyser implements FileAnalyser
} }
/** /**
* @return array<string, Trait_> * @return array<string, CodeUnitTraitType>
*/ */
public function traitsIn(string $filename): array public function traitsIn(string $filename): array
{ {
@ -95,7 +74,7 @@ final class CachingFileAnalyser implements FileAnalyser
} }
/** /**
* @return array<string, Function_> * @return array<string, CodeUnitFunctionType>
*/ */
public function functionsIn(string $filename): array public function functionsIn(string $filename): array
{ {
@ -106,7 +85,10 @@ final class CachingFileAnalyser implements FileAnalyser
return $this->cache[$filename]['functionsIn']; return $this->cache[$filename]['functionsIn'];
} }
public function linesOfCodeFor(string $filename): LinesOfCode /**
* @return LinesOfCodeType
*/
public function linesOfCodeFor(string $filename): array
{ {
if (!isset($this->cache[$filename])) { if (!isset($this->cache[$filename])) {
$this->process($filename); $this->process($filename);
@ -150,7 +132,6 @@ final class CachingFileAnalyser implements FileAnalyser
} }
$this->cache[$filename] = [ $this->cache[$filename] = [
'interfacesIn' => $this->analyser->interfacesIn($filename),
'classesIn' => $this->analyser->classesIn($filename), 'classesIn' => $this->analyser->classesIn($filename),
'traitsIn' => $this->analyser->traitsIn($filename), 'traitsIn' => $this->analyser->traitsIn($filename),
'functionsIn' => $this->analyser->functionsIn($filename), 'functionsIn' => $this->analyser->functionsIn($filename),
@ -162,9 +143,6 @@ final class CachingFileAnalyser implements FileAnalyser
$this->write($filename, $this->cache[$filename]); $this->write($filename, $this->cache[$filename]);
} }
/**
* @return CachedDataForFile|false
*/
private function read(string $filename): array|false private function read(string $filename): array|false
{ {
$cacheFile = $this->cacheFile($filename); $cacheFile = $this->cacheFile($filename);
@ -175,22 +153,10 @@ final class CachingFileAnalyser implements FileAnalyser
return unserialize( return unserialize(
file_get_contents($cacheFile), file_get_contents($cacheFile),
[ ['allowed_classes' => false],
'allowed_classes' => [
Class_::class,
Function_::class,
Interface_::class,
LinesOfCode::class,
Method::class,
Trait_::class,
],
],
); );
} }
/**
* @param CachedDataForFile $data
*/
private function write(string $filename, array $data): void private function write(string $filename, array $data): void
{ {
file_put_contents( file_put_contents(

View File

@ -21,6 +21,7 @@ use PhpParser\Node\Name;
use PhpParser\Node\NullableType; use PhpParser\Node\NullableType;
use PhpParser\Node\Stmt\Class_; use PhpParser\Node\Stmt\Class_;
use PhpParser\Node\Stmt\ClassMethod; use PhpParser\Node\Stmt\ClassMethod;
use PhpParser\Node\Stmt\Enum_;
use PhpParser\Node\Stmt\Function_; use PhpParser\Node\Stmt\Function_;
use PhpParser\Node\Stmt\Interface_; use PhpParser\Node\Stmt\Interface_;
use PhpParser\Node\Stmt\Trait_; use PhpParser\Node\Stmt\Trait_;
@ -31,51 +32,63 @@ use SebastianBergmann\Complexity\CyclomaticComplexityCalculatingVisitor;
/** /**
* @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage
*
* @phpstan-type CodeUnitFunctionType = array{
* name: string,
* namespacedName: string,
* namespace: string,
* signature: string,
* startLine: int,
* endLine: int,
* ccn: int
* }
* @phpstan-type CodeUnitMethodType = array{
* methodName: string,
* signature: string,
* visibility: string,
* startLine: int,
* endLine: int,
* ccn: int
* }
* @phpstan-type CodeUnitClassType = array{
* name: string,
* namespacedName: string,
* namespace: string,
* startLine: int,
* endLine: int,
* methods: array<string, CodeUnitMethodType>
* }
* @phpstan-type CodeUnitTraitType = array{
* name: string,
* namespacedName: string,
* namespace: string,
* startLine: int,
* endLine: int,
* methods: array<string, CodeUnitMethodType>
* }
*/ */
final class CodeUnitFindingVisitor extends NodeVisitorAbstract final class CodeUnitFindingVisitor extends NodeVisitorAbstract
{ {
/** /**
* @var non-empty-string * @var array<string, CodeUnitClassType>
*/
private string $file;
/**
* @var array<string, \SebastianBergmann\CodeCoverage\StaticAnalysis\Interface_>
*/
private array $interfaces = [];
/**
* @var array<string, \SebastianBergmann\CodeCoverage\StaticAnalysis\Class_>
*/ */
private array $classes = []; private array $classes = [];
/** /**
* @var array<string, \SebastianBergmann\CodeCoverage\StaticAnalysis\Trait_> * @var array<string, CodeUnitTraitType>
*/ */
private array $traits = []; private array $traits = [];
/** /**
* @var array<string, \SebastianBergmann\CodeCoverage\StaticAnalysis\Function_> * @var array<string, CodeUnitFunctionType>
*/ */
private array $functions = []; private array $functions = [];
/** public function enterNode(Node $node): void
* @param non-empty-string $file
*/
public function __construct(string $file)
{ {
$this->file = $file;
}
public function enterNode(Node $node): null
{
if ($node instanceof Interface_) {
$this->processInterface($node);
}
if ($node instanceof Class_) { if ($node instanceof Class_) {
if ($node->isAnonymous()) { if ($node->isAnonymous()) {
return null; return;
} }
$this->processClass($node); $this->processClass($node);
@ -85,52 +98,27 @@ final class CodeUnitFindingVisitor extends NodeVisitorAbstract
$this->processTrait($node); $this->processTrait($node);
} }
if (!$node instanceof Function_) { if (!$node instanceof ClassMethod && !$node instanceof Function_) {
return null; return;
}
if ($node instanceof ClassMethod) {
$parentNode = $node->getAttribute('parent');
if ($parentNode instanceof Class_ && $parentNode->isAnonymous()) {
return;
}
$this->processMethod($node);
return;
} }
$this->processFunction($node); $this->processFunction($node);
return null;
}
public function leaveNode(Node $node): null
{
if ($node instanceof Class_ && $node->isAnonymous()) {
return null;
}
if (!$node instanceof Class_ && !$node instanceof Trait_) {
return null;
}
$traits = [];
foreach ($node->getTraitUses() as $traitUse) {
foreach ($traitUse->traits as $trait) {
$traits[] = $trait->toString();
}
}
if (empty($traits)) {
return null;
}
$this->postProcessClassOrTrait($node, $traits);
return null;
} }
/** /**
* @return array<string, \SebastianBergmann\CodeCoverage\StaticAnalysis\Interface_> * @return array<string, CodeUnitClassType>
*/
public function interfaces(): array
{
return $this->interfaces;
}
/**
* @return array<string, \SebastianBergmann\CodeCoverage\StaticAnalysis\Class_>
*/ */
public function classes(): array public function classes(): array
{ {
@ -138,7 +126,7 @@ final class CodeUnitFindingVisitor extends NodeVisitorAbstract
} }
/** /**
* @return array<string, \SebastianBergmann\CodeCoverage\StaticAnalysis\Trait_> * @return array<string, CodeUnitTraitType>
*/ */
public function traits(): array public function traits(): array
{ {
@ -146,7 +134,7 @@ final class CodeUnitFindingVisitor extends NodeVisitorAbstract
} }
/** /**
* @return array<string, \SebastianBergmann\CodeCoverage\StaticAnalysis\Function_> * @return array<string, CodeUnitFunctionType>
*/ */
public function functions(): array public function functions(): array
{ {
@ -222,66 +210,32 @@ final class CodeUnitFindingVisitor extends NodeVisitorAbstract
return $type->toString(); return $type->toString();
} }
private function visibility(ClassMethod $node): Visibility private function visibility(ClassMethod $node): string
{ {
if ($node->isPrivate()) { if ($node->isPrivate()) {
return Visibility::Private; return 'private';
} }
if ($node->isProtected()) { if ($node->isProtected()) {
return Visibility::Protected; return 'protected';
} }
return Visibility::Public; return 'public';
}
private function processInterface(Interface_ $node): void
{
$name = $node->name->toString();
$namespacedName = $node->namespacedName->toString();
$parentInterfaces = [];
foreach ($node->extends as $parentInterface) {
$parentInterfaces[] = $parentInterface->toString();
}
$this->interfaces[$namespacedName] = new \SebastianBergmann\CodeCoverage\StaticAnalysis\Interface_(
$name,
$namespacedName,
$this->namespace($namespacedName, $name),
$node->getStartLine(),
$node->getEndLine(),
$parentInterfaces,
);
} }
private function processClass(Class_ $node): void private function processClass(Class_ $node): void
{ {
$name = $node->name->toString(); $name = $node->name->toString();
$namespacedName = $node->namespacedName->toString(); $namespacedName = $node->namespacedName->toString();
$parentClass = null;
$interfaces = [];
if ($node->extends instanceof Name) { $this->classes[$namespacedName] = [
$parentClass = $node->extends->toString(); 'name' => $name,
} 'namespacedName' => $namespacedName,
'namespace' => $this->namespace($namespacedName, $name),
foreach ($node->implements as $interface) { 'startLine' => $node->getStartLine(),
$interfaces[] = $interface->toString(); 'endLine' => $node->getEndLine(),
} 'methods' => [],
];
$this->classes[$namespacedName] = new \SebastianBergmann\CodeCoverage\StaticAnalysis\Class_(
$name,
$namespacedName,
$this->namespace($namespacedName, $name),
$this->file,
$node->getStartLine(),
$node->getEndLine(),
$parentClass,
$interfaces,
[],
$this->processMethods($node->getMethods()),
);
} }
private function processTrait(Trait_ $node): void private function processTrait(Trait_ $node): void
@ -289,39 +243,57 @@ final class CodeUnitFindingVisitor extends NodeVisitorAbstract
$name = $node->name->toString(); $name = $node->name->toString();
$namespacedName = $node->namespacedName->toString(); $namespacedName = $node->namespacedName->toString();
$this->traits[$namespacedName] = new \SebastianBergmann\CodeCoverage\StaticAnalysis\Trait_( $this->traits[$namespacedName] = [
$name, 'name' => $name,
$namespacedName, 'namespacedName' => $namespacedName,
$this->namespace($namespacedName, $name), 'namespace' => $this->namespace($namespacedName, $name),
$this->file, 'startLine' => $node->getStartLine(),
$node->getStartLine(), 'endLine' => $node->getEndLine(),
$node->getEndLine(), 'methods' => [],
[], ];
$this->processMethods($node->getMethods()),
);
} }
/** private function processMethod(ClassMethod $node): void
* @param list<ClassMethod> $nodes
*
* @return array<non-empty-string, Method>
*/
private function processMethods(array $nodes): array
{ {
$methods = []; $parentNode = $node->getAttribute('parent');
foreach ($nodes as $node) { if ($parentNode instanceof Interface_) {
$methods[$node->name->toString()] = new Method( return;
$node->name->toString(),
$node->getStartLine(),
$node->getEndLine(),
$this->signature($node),
$this->visibility($node),
$this->cyclomaticComplexity($node),
);
} }
return $methods; assert($parentNode instanceof Class_ || $parentNode instanceof Trait_ || $parentNode instanceof Enum_);
assert(isset($parentNode->name));
assert(isset($parentNode->namespacedName));
assert($parentNode->namespacedName instanceof Name);
$parentName = $parentNode->name->toString();
$parentNamespacedName = $parentNode->namespacedName->toString();
if ($parentNode instanceof Class_) {
$storage = &$this->classes;
} else {
$storage = &$this->traits;
}
if (!isset($storage[$parentNamespacedName])) {
$storage[$parentNamespacedName] = [
'name' => $parentName,
'namespacedName' => $parentNamespacedName,
'namespace' => $this->namespace($parentNamespacedName, $parentName),
'startLine' => $parentNode->getStartLine(),
'endLine' => $parentNode->getEndLine(),
'methods' => [],
];
}
$storage[$parentNamespacedName]['methods'][$node->name->toString()] = [
'methodName' => $node->name->toString(),
'signature' => $this->signature($node),
'visibility' => $this->visibility($node),
'startLine' => $node->getStartLine(),
'endLine' => $node->getEndLine(),
'ccn' => $this->cyclomaticComplexity($node),
];
} }
private function processFunction(Function_ $node): void private function processFunction(Function_ $node): void
@ -333,15 +305,15 @@ final class CodeUnitFindingVisitor extends NodeVisitorAbstract
$name = $node->name->toString(); $name = $node->name->toString();
$namespacedName = $node->namespacedName->toString(); $namespacedName = $node->namespacedName->toString();
$this->functions[$namespacedName] = new \SebastianBergmann\CodeCoverage\StaticAnalysis\Function_( $this->functions[$namespacedName] = [
$name, 'name' => $name,
$namespacedName, 'namespacedName' => $namespacedName,
$this->namespace($namespacedName, $name), 'namespace' => $this->namespace($namespacedName, $name),
$node->getStartLine(), 'signature' => $this->signature($node),
$node->getEndLine(), 'startLine' => $node->getStartLine(),
$this->signature($node), 'endLine' => $node->getEndLine(),
$this->cyclomaticComplexity($node), 'ccn' => $this->cyclomaticComplexity($node),
); ];
} }
private function namespace(string $namespacedName, string $name): string private function namespace(string $namespacedName, string $name): string
@ -385,44 +357,4 @@ final class CodeUnitFindingVisitor extends NodeVisitorAbstract
return $node->toString(); return $node->toString();
} }
/**
* @param list<non-empty-string> $traits
*/
private function postProcessClassOrTrait(Class_|Trait_ $node, array $traits): void
{
$name = $node->namespacedName->toString();
if ($node instanceof Class_) {
assert(isset($this->classes[$name]));
$this->classes[$name] = new \SebastianBergmann\CodeCoverage\StaticAnalysis\Class_(
$this->classes[$name]->name(),
$this->classes[$name]->namespacedName(),
$this->classes[$name]->namespace(),
$this->classes[$name]->file(),
$this->classes[$name]->startLine(),
$this->classes[$name]->endLine(),
$this->classes[$name]->parentClass(),
$this->classes[$name]->interfaces(),
$traits,
$this->classes[$name]->methods(),
);
return;
}
assert(isset($this->traits[$name]));
$this->traits[$name] = new \SebastianBergmann\CodeCoverage\StaticAnalysis\Trait_(
$this->traits[$name]->name(),
$this->traits[$name]->namespacedName(),
$this->traits[$name]->namespace(),
$this->traits[$name]->file(),
$this->traits[$name]->startLine(),
$this->traits[$name]->endLine(),
$traits,
$this->traits[$name]->methods(),
);
}
} }

View File

@ -27,7 +27,7 @@ use PhpParser\NodeVisitorAbstract;
/** /**
* @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage
* *
* @phpstan-import-type LinesType from FileAnalyser * @phpstan-import-type LinesType from \SebastianBergmann\CodeCoverage\StaticAnalysis\FileAnalyser
*/ */
final class ExecutableLinesFindingVisitor extends NodeVisitorAbstract final class ExecutableLinesFindingVisitor extends NodeVisitorAbstract
{ {
@ -54,7 +54,7 @@ final class ExecutableLinesFindingVisitor extends NodeVisitorAbstract
$this->source = $source; $this->source = $source;
} }
public function enterNode(Node $node): null public function enterNode(Node $node): void
{ {
foreach ($node->getComments() as $comment) { foreach ($node->getComments() as $comment) {
$commentLine = $comment->getStartLine(); $commentLine = $comment->getStartLine();
@ -80,7 +80,7 @@ final class ExecutableLinesFindingVisitor extends NodeVisitorAbstract
} }
} }
return null; return;
} }
if ($node instanceof Node\Stmt\Interface_) { if ($node instanceof Node\Stmt\Interface_) {
@ -88,7 +88,7 @@ final class ExecutableLinesFindingVisitor extends NodeVisitorAbstract
$this->unsets[$line] = true; $this->unsets[$line] = true;
} }
return null; return;
} }
if ($node instanceof Node\Stmt\Declare_ || if ($node instanceof Node\Stmt\Declare_ ||
@ -113,7 +113,7 @@ final class ExecutableLinesFindingVisitor extends NodeVisitorAbstract
$node instanceof Node\Name || $node instanceof Node\Name ||
$node instanceof Node\Param || $node instanceof Node\Param ||
$node instanceof Node\Scalar) { $node instanceof Node\Scalar) {
return null; return;
} }
if ($node instanceof Node\Expr\Match_) { if ($node instanceof Node\Expr\Match_) {
@ -125,13 +125,13 @@ final class ExecutableLinesFindingVisitor extends NodeVisitorAbstract
); );
} }
return null; return;
} }
if ($node instanceof Node\Stmt\Expression && $node->expr instanceof Node\Expr\Throw_) { if ($node instanceof Node\Stmt\Expression && $node->expr instanceof Node\Expr\Throw_) {
$this->setLineBranch($node->expr->expr->getEndLine(), $node->expr->expr->getEndLine(), ++$this->nextBranch); $this->setLineBranch($node->expr->expr->getEndLine(), $node->expr->expr->getEndLine(), ++$this->nextBranch);
return null; return;
} }
if ($node instanceof Node\Stmt\Enum_ || if ($node instanceof Node\Stmt\Enum_ ||
@ -176,7 +176,7 @@ final class ExecutableLinesFindingVisitor extends NodeVisitorAbstract
} }
if ($isConcreteClassLike) { if ($isConcreteClassLike) {
return null; return;
} }
$hasEmptyBody = [] === $node->stmts || $hasEmptyBody = [] === $node->stmts ||
@ -188,15 +188,15 @@ final class ExecutableLinesFindingVisitor extends NodeVisitorAbstract
if ($hasEmptyBody) { if ($hasEmptyBody) {
if ($node->getEndLine() === $node->getStartLine() && isset($this->executableLinesGroupedByBranch[$node->getStartLine()])) { if ($node->getEndLine() === $node->getStartLine() && isset($this->executableLinesGroupedByBranch[$node->getStartLine()])) {
return null; return;
} }
$this->setLineBranch($node->getEndLine(), $node->getEndLine(), ++$this->nextBranch); $this->setLineBranch($node->getEndLine(), $node->getEndLine(), ++$this->nextBranch);
return null; return;
} }
return null; return;
} }
if ($node instanceof Node\Expr\ArrowFunction) { if ($node instanceof Node\Expr\ArrowFunction) {
@ -208,12 +208,12 @@ final class ExecutableLinesFindingVisitor extends NodeVisitorAbstract
$endLine = $node->expr->getEndLine(); $endLine = $node->expr->getEndLine();
if ($endLine < $startLine) { if ($endLine < $startLine) {
return null; return;
} }
$this->setLineBranch($startLine, $endLine, ++$this->nextBranch); $this->setLineBranch($startLine, $endLine, ++$this->nextBranch);
return null; return;
} }
if ($node instanceof Node\Expr\Ternary) { if ($node instanceof Node\Expr\Ternary) {
@ -226,7 +226,7 @@ final class ExecutableLinesFindingVisitor extends NodeVisitorAbstract
$this->setLineBranch($node->else->getStartLine(), $node->else->getEndLine(), ++$this->nextBranch); $this->setLineBranch($node->else->getStartLine(), $node->else->getEndLine(), ++$this->nextBranch);
} }
return null; return;
} }
if ($node instanceof Node\Expr\BinaryOp\Coalesce) { if ($node instanceof Node\Expr\BinaryOp\Coalesce) {
@ -234,14 +234,14 @@ final class ExecutableLinesFindingVisitor extends NodeVisitorAbstract
$this->setLineBranch($node->getEndLine(), $node->getEndLine(), ++$this->nextBranch); $this->setLineBranch($node->getEndLine(), $node->getEndLine(), ++$this->nextBranch);
} }
return null; return;
} }
if ($node instanceof Node\Stmt\If_ || if ($node instanceof Node\Stmt\If_ ||
$node instanceof Node\Stmt\ElseIf_ || $node instanceof Node\Stmt\ElseIf_ ||
$node instanceof Node\Stmt\Case_) { $node instanceof Node\Stmt\Case_) {
if (null === $node->cond) { if (null === $node->cond) {
return null; return;
} }
$this->setLineBranch( $this->setLineBranch(
@ -250,7 +250,7 @@ final class ExecutableLinesFindingVisitor extends NodeVisitorAbstract
++$this->nextBranch, ++$this->nextBranch,
); );
return null; return;
} }
if ($node instanceof Node\Stmt\For_) { if ($node instanceof Node\Stmt\For_) {
@ -292,7 +292,7 @@ final class ExecutableLinesFindingVisitor extends NodeVisitorAbstract
} }
if (null === $startLine || null === $endLine) { if (null === $startLine || null === $endLine) {
return null; return;
} }
$this->setLineBranch( $this->setLineBranch(
@ -301,7 +301,7 @@ final class ExecutableLinesFindingVisitor extends NodeVisitorAbstract
++$this->nextBranch, ++$this->nextBranch,
); );
return null; return;
} }
if ($node instanceof Node\Stmt\Foreach_) { if ($node instanceof Node\Stmt\Foreach_) {
@ -311,7 +311,7 @@ final class ExecutableLinesFindingVisitor extends NodeVisitorAbstract
++$this->nextBranch, ++$this->nextBranch,
); );
return null; return;
} }
if ($node instanceof Node\Stmt\While_ || if ($node instanceof Node\Stmt\While_ ||
@ -322,7 +322,7 @@ final class ExecutableLinesFindingVisitor extends NodeVisitorAbstract
++$this->nextBranch, ++$this->nextBranch,
); );
return null; return;
} }
if ($node instanceof Node\Stmt\Catch_) { if ($node instanceof Node\Stmt\Catch_) {
@ -337,7 +337,7 @@ final class ExecutableLinesFindingVisitor extends NodeVisitorAbstract
++$this->nextBranch, ++$this->nextBranch,
); );
return null; return;
} }
if ($node instanceof Node\Expr\CallLike) { if ($node instanceof Node\Expr\CallLike) {
@ -349,19 +349,17 @@ final class ExecutableLinesFindingVisitor extends NodeVisitorAbstract
$this->setLineBranch($node->getStartLine(), $node->getEndLine(), $branch); $this->setLineBranch($node->getStartLine(), $node->getEndLine(), $branch);
return null; return;
} }
if (isset($this->executableLinesGroupedByBranch[$node->getStartLine()])) { if (isset($this->executableLinesGroupedByBranch[$node->getStartLine()])) {
return null; return;
} }
$this->setLineBranch($node->getStartLine(), $node->getEndLine(), ++$this->nextBranch); $this->setLineBranch($node->getStartLine(), $node->getEndLine(), ++$this->nextBranch);
return null;
} }
public function afterTraverse(array $nodes): null public function afterTraverse(array $nodes): void
{ {
$lines = explode("\n", $this->source); $lines = explode("\n", $this->source);
@ -381,8 +379,6 @@ final class ExecutableLinesFindingVisitor extends NodeVisitorAbstract
$this->executableLinesGroupedByBranch, $this->executableLinesGroupedByBranch,
$this->unsets, $this->unsets,
); );
return null;
} }
/** /**

View File

@ -12,31 +12,39 @@ namespace SebastianBergmann\CodeCoverage\StaticAnalysis;
/** /**
* @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage
* *
* @phpstan-type LinesType array<int, int> * @phpstan-import-type CodeUnitFunctionType from \SebastianBergmann\CodeCoverage\StaticAnalysis\CodeUnitFindingVisitor
* @phpstan-import-type CodeUnitMethodType from \SebastianBergmann\CodeCoverage\StaticAnalysis\CodeUnitFindingVisitor
* @phpstan-import-type CodeUnitClassType from \SebastianBergmann\CodeCoverage\StaticAnalysis\CodeUnitFindingVisitor
* @phpstan-import-type CodeUnitTraitType from \SebastianBergmann\CodeCoverage\StaticAnalysis\CodeUnitFindingVisitor
*
* @phpstan-type LinesOfCodeType = array{
* linesOfCode: int,
* commentLinesOfCode: int,
* nonCommentLinesOfCode: int
* }
* @phpstan-type LinesType = array<int, int>
*/ */
interface FileAnalyser interface FileAnalyser
{ {
/** /**
* @return array<string, Interface_> * @return array<string, CodeUnitClassType>
*/
public function interfacesIn(string $filename): array;
/**
* @return array<string, Class_>
*/ */
public function classesIn(string $filename): array; public function classesIn(string $filename): array;
/** /**
* @return array<string, Trait_> * @return array<string, CodeUnitTraitType>
*/ */
public function traitsIn(string $filename): array; public function traitsIn(string $filename): array;
/** /**
* @return array<string, Function_> * @return array<string, CodeUnitFunctionType>
*/ */
public function functionsIn(string $filename): array; public function functionsIn(string $filename): array;
public function linesOfCodeFor(string $filename): LinesOfCode; /**
* @return LinesOfCodeType
*/
public function linesOfCodeFor(string $filename): array;
/** /**
* @return LinesType * @return LinesType

View File

@ -39,7 +39,7 @@ final class IgnoredLinesFindingVisitor extends NodeVisitorAbstract
$this->ignoreDeprecated = $ignoreDeprecated; $this->ignoreDeprecated = $ignoreDeprecated;
} }
public function enterNode(Node $node): null public function enterNode(Node $node): void
{ {
if (!$node instanceof Class_ && if (!$node instanceof Class_ &&
!$node instanceof Trait_ && !$node instanceof Trait_ &&
@ -48,11 +48,11 @@ final class IgnoredLinesFindingVisitor extends NodeVisitorAbstract
!$node instanceof ClassMethod && !$node instanceof ClassMethod &&
!$node instanceof Function_ && !$node instanceof Function_ &&
!$node instanceof Attribute) { !$node instanceof Attribute) {
return null; return;
} }
if ($node instanceof Class_ && $node->isAnonymous()) { if ($node instanceof Class_ && $node->isAnonymous()) {
return null; return;
} }
if ($node instanceof Class_ || if ($node instanceof Class_ ||
@ -68,11 +68,11 @@ final class IgnoredLinesFindingVisitor extends NodeVisitorAbstract
} }
if (!$this->useAnnotationsForIgnoringCode) { if (!$this->useAnnotationsForIgnoringCode) {
return null; return;
} }
if ($node instanceof Interface_) { if ($node instanceof Interface_) {
return null; return;
} }
if ($node instanceof Attribute && if ($node instanceof Attribute &&
@ -84,12 +84,10 @@ final class IgnoredLinesFindingVisitor extends NodeVisitorAbstract
$this->ignoredLines[] = $line; $this->ignoredLines[] = $line;
} }
return null; return;
} }
$this->processDocComment($node); $this->processDocComment($node);
return null;
} }
/** /**

View File

@ -34,32 +34,32 @@ use SebastianBergmann\LinesOfCode\LineCountingVisitor;
/** /**
* @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage
* *
* @phpstan-import-type LinesType from FileAnalyser * @phpstan-import-type CodeUnitFunctionType from \SebastianBergmann\CodeCoverage\StaticAnalysis\CodeUnitFindingVisitor
* @phpstan-import-type CodeUnitMethodType from \SebastianBergmann\CodeCoverage\StaticAnalysis\CodeUnitFindingVisitor
* @phpstan-import-type CodeUnitClassType from \SebastianBergmann\CodeCoverage\StaticAnalysis\CodeUnitFindingVisitor
* @phpstan-import-type CodeUnitTraitType from \SebastianBergmann\CodeCoverage\StaticAnalysis\CodeUnitFindingVisitor
* @phpstan-import-type LinesOfCodeType from \SebastianBergmann\CodeCoverage\StaticAnalysis\FileAnalyser
* @phpstan-import-type LinesType from \SebastianBergmann\CodeCoverage\StaticAnalysis\FileAnalyser
*/ */
final class ParsingFileAnalyser implements FileAnalyser final class ParsingFileAnalyser implements FileAnalyser
{ {
/** /**
* @var array<string, array<string, Interface_>> * @var array<string, array<string, CodeUnitClassType>>
*/
private array $interfaces = [];
/**
* @var array<string, array<string, Class_>>
*/ */
private array $classes = []; private array $classes = [];
/** /**
* @var array<string, array<string, Trait_>> * @var array<string, array<string, CodeUnitTraitType>>
*/ */
private array $traits = []; private array $traits = [];
/** /**
* @var array<string, array<string, Function_>> * @var array<string, array<string, CodeUnitFunctionType>>
*/ */
private array $functions = []; private array $functions = [];
/** /**
* @var array<string, LinesOfCode> * @var array<string, LinesOfCodeType>
*/ */
private array $linesOfCode = []; private array $linesOfCode = [];
@ -82,17 +82,7 @@ final class ParsingFileAnalyser implements FileAnalyser
} }
/** /**
* @return array<string, Interface_> * @return array<string, CodeUnitClassType>
*/
public function interfacesIn(string $filename): array
{
$this->analyse($filename);
return $this->interfaces[$filename];
}
/**
* @return array<string, Class_>
*/ */
public function classesIn(string $filename): array public function classesIn(string $filename): array
{ {
@ -102,7 +92,7 @@ final class ParsingFileAnalyser implements FileAnalyser
} }
/** /**
* @return array<string, Trait_> * @return array<string, CodeUnitTraitType>
*/ */
public function traitsIn(string $filename): array public function traitsIn(string $filename): array
{ {
@ -112,7 +102,7 @@ final class ParsingFileAnalyser implements FileAnalyser
} }
/** /**
* @return array<string, Function_> * @return array<string, CodeUnitFunctionType>
*/ */
public function functionsIn(string $filename): array public function functionsIn(string $filename): array
{ {
@ -121,7 +111,10 @@ final class ParsingFileAnalyser implements FileAnalyser
return $this->functions[$filename]; return $this->functions[$filename];
} }
public function linesOfCodeFor(string $filename): LinesOfCode /**
* @return LinesOfCodeType
*/
public function linesOfCodeFor(string $filename): array
{ {
$this->analyse($filename); $this->analyse($filename);
@ -153,7 +146,7 @@ final class ParsingFileAnalyser implements FileAnalyser
*/ */
private function analyse(string $filename): void private function analyse(string $filename): void
{ {
if (isset($this->interfaces[$filename])) { if (isset($this->classes[$filename])) {
return; return;
} }
@ -174,7 +167,7 @@ final class ParsingFileAnalyser implements FileAnalyser
assert($nodes !== null); assert($nodes !== null);
$traverser = new NodeTraverser; $traverser = new NodeTraverser;
$codeUnitFindingVisitor = new CodeUnitFindingVisitor($filename); $codeUnitFindingVisitor = new CodeUnitFindingVisitor;
$lineCountingVisitor = new LineCountingVisitor($linesOfCode); $lineCountingVisitor = new LineCountingVisitor($linesOfCode);
$ignoredLinesFindingVisitor = new IgnoredLinesFindingVisitor($this->useAnnotationsForIgnoringCode, $this->ignoreDeprecatedCode); $ignoredLinesFindingVisitor = new IgnoredLinesFindingVisitor($this->useAnnotationsForIgnoringCode, $this->ignoreDeprecatedCode);
$executableLinesFindingVisitor = new ExecutableLinesFindingVisitor($source); $executableLinesFindingVisitor = new ExecutableLinesFindingVisitor($source);
@ -202,7 +195,6 @@ final class ParsingFileAnalyser implements FileAnalyser
} }
// @codeCoverageIgnoreEnd // @codeCoverageIgnoreEnd
$this->interfaces[$filename] = $codeUnitFindingVisitor->interfaces();
$this->classes[$filename] = $codeUnitFindingVisitor->classes(); $this->classes[$filename] = $codeUnitFindingVisitor->classes();
$this->traits[$filename] = $codeUnitFindingVisitor->traits(); $this->traits[$filename] = $codeUnitFindingVisitor->traits();
$this->functions[$filename] = $codeUnitFindingVisitor->functions(); $this->functions[$filename] = $codeUnitFindingVisitor->functions();
@ -222,11 +214,11 @@ final class ParsingFileAnalyser implements FileAnalyser
$result = $lineCountingVisitor->result(); $result = $lineCountingVisitor->result();
$this->linesOfCode[$filename] = new LinesOfCode( $this->linesOfCode[$filename] = [
$result->linesOfCode(), 'linesOfCode' => $result->linesOfCode(),
$result->commentLinesOfCode(), 'commentLinesOfCode' => $result->commentLinesOfCode(),
$result->nonCommentLinesOfCode(), 'nonCommentLinesOfCode' => $result->nonCommentLinesOfCode(),
); ];
} }
private function findLinesIgnoredByLineBasedAnnotations(string $filename, string $source, bool $useAnnotationsForIgnoringCode): void private function findLinesIgnoredByLineBasedAnnotations(string $filename, string $source, bool $useAnnotationsForIgnoringCode): void

View File

@ -1,174 +0,0 @@
<?php declare(strict_types=1);
/*
* This file is part of phpunit/php-code-coverage.
*
* (c) Sebastian Bergmann <sebastian@phpunit.de>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace SebastianBergmann\CodeCoverage\StaticAnalysis;
/**
* @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage
*/
final readonly class Class_
{
/**
* @var non-empty-string
*/
private string $name;
/**
* @var non-empty-string
*/
private string $namespacedName;
private string $namespace;
/**
* @var non-empty-string
*/
private string $file;
/**
* @var non-negative-int
*/
private int $startLine;
/**
* @var non-negative-int
*/
private int $endLine;
/**
* @var ?non-empty-string
*/
private ?string $parentClass;
/**
* @var list<non-empty-string>
*/
private array $interfaces;
/**
* @var list<non-empty-string>
*/
private array $traits;
/**
* @var array<non-empty-string, Method>
*/
private array $methods;
/**
* @param non-empty-string $name
* @param non-empty-string $namespacedName
* @param non-empty-string $file
* @param non-negative-int $startLine
* @param non-negative-int $endLine
* @param ?non-empty-string $parentClass
* @param list<non-empty-string> $interfaces
* @param list<non-empty-string> $traits
* @param array<non-empty-string, Method> $methods
*/
public function __construct(string $name, string $namespacedName, string $namespace, string $file, int $startLine, int $endLine, ?string $parentClass, array $interfaces, array $traits, array $methods)
{
$this->name = $name;
$this->namespacedName = $namespacedName;
$this->namespace = $namespace;
$this->file = $file;
$this->startLine = $startLine;
$this->endLine = $endLine;
$this->parentClass = $parentClass;
$this->interfaces = $interfaces;
$this->traits = $traits;
$this->methods = $methods;
}
/**
* @return non-empty-string
*/
public function name(): string
{
return $this->name;
}
/**
* @return non-empty-string
*/
public function namespacedName(): string
{
return $this->namespacedName;
}
public function isNamespaced(): bool
{
return $this->namespace !== '';
}
public function namespace(): string
{
return $this->namespace;
}
/**
* @return non-empty-string
*/
public function file(): string
{
return $this->file;
}
/**
* @return non-negative-int
*/
public function startLine(): int
{
return $this->startLine;
}
/**
* @return non-negative-int
*/
public function endLine(): int
{
return $this->endLine;
}
public function hasParent(): bool
{
return $this->parentClass !== null;
}
/**
* @return ?non-empty-string
*/
public function parentClass(): ?string
{
return $this->parentClass;
}
/**
* @return list<non-empty-string>
*/
public function interfaces(): array
{
return $this->interfaces;
}
/**
* @return list<non-empty-string>
*/
public function traits(): array
{
return $this->traits;
}
/**
* @return array<non-empty-string, Method>
*/
public function methods(): array
{
return $this->methods;
}
}

View File

@ -1,124 +0,0 @@
<?php declare(strict_types=1);
/*
* This file is part of phpunit/php-code-coverage.
*
* (c) Sebastian Bergmann <sebastian@phpunit.de>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace SebastianBergmann\CodeCoverage\StaticAnalysis;
/**
* @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage
*/
final readonly class Function_
{
/**
* @var non-empty-string
*/
private string $name;
/**
* @var non-empty-string
*/
private string $namespacedName;
private string $namespace;
/**
* @var non-negative-int
*/
private int $startLine;
/**
* @var non-negative-int
*/
private int $endLine;
/**
* @var non-empty-string
*/
private string $signature;
/**
* @var positive-int
*/
private int $cyclomaticComplexity;
/**
* @param non-empty-string $name
* @param non-empty-string $namespacedName
* @param non-negative-int $startLine
* @param non-negative-int $endLine
* @param non-empty-string $signature
* @param positive-int $cyclomaticComplexity
*/
public function __construct(string $name, string $namespacedName, string $namespace, int $startLine, int $endLine, string $signature, int $cyclomaticComplexity)
{
$this->name = $name;
$this->namespacedName = $namespacedName;
$this->namespace = $namespace;
$this->startLine = $startLine;
$this->endLine = $endLine;
$this->signature = $signature;
$this->cyclomaticComplexity = $cyclomaticComplexity;
}
/**
* @return non-empty-string
*/
public function name(): string
{
return $this->name;
}
/**
* @return non-empty-string
*/
public function namespacedName(): string
{
return $this->namespacedName;
}
public function isNamespaced(): bool
{
return $this->namespace !== '';
}
public function namespace(): string
{
return $this->namespace;
}
/**
* @return non-negative-int
*/
public function startLine(): int
{
return $this->startLine;
}
/**
* @return non-negative-int
*/
public function endLine(): int
{
return $this->endLine;
}
/**
* @return non-empty-string
*/
public function signature(): string
{
return $this->signature;
}
/**
* @return positive-int
*/
public function cyclomaticComplexity(): int
{
return $this->cyclomaticComplexity;
}
}

View File

@ -1,109 +0,0 @@
<?php declare(strict_types=1);
/*
* This file is part of phpunit/php-code-coverage.
*
* (c) Sebastian Bergmann <sebastian@phpunit.de>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace SebastianBergmann\CodeCoverage\StaticAnalysis;
/**
* @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage
*/
final readonly class Interface_
{
/**
* @var non-empty-string
*/
private string $name;
/**
* @var non-empty-string
*/
private string $namespacedName;
private string $namespace;
/**
* @var non-negative-int
*/
private int $startLine;
/**
* @var non-negative-int
*/
private int $endLine;
/**
* @var list<non-empty-string>
*/
private array $parentInterfaces;
/**
* @param non-empty-string $name
* @param non-empty-string $namespacedName
* @param non-negative-int $startLine
* @param non-negative-int $endLine
* @param list<non-empty-string> $parentInterfaces
*/
public function __construct(string $name, string $namespacedName, string $namespace, int $startLine, int $endLine, array $parentInterfaces)
{
$this->name = $name;
$this->namespacedName = $namespacedName;
$this->namespace = $namespace;
$this->startLine = $startLine;
$this->endLine = $endLine;
$this->parentInterfaces = $parentInterfaces;
}
/**
* @return non-empty-string
*/
public function name(): string
{
return $this->name;
}
/**
* @return non-empty-string
*/
public function namespacedName(): string
{
return $this->namespacedName;
}
public function isNamespaced(): bool
{
return $this->namespace !== '';
}
public function namespace(): string
{
return $this->namespace;
}
/**
* @return non-negative-int
*/
public function startLine(): int
{
return $this->startLine;
}
/**
* @return non-negative-int
*/
public function endLine(): int
{
return $this->endLine;
}
/**
* @return list<non-empty-string>
*/
public function parentInterfaces(): array
{
return $this->parentInterfaces;
}
}

View File

@ -1,67 +0,0 @@
<?php declare(strict_types=1);
/*
* This file is part of phpunit/php-code-coverage.
*
* (c) Sebastian Bergmann <sebastian@phpunit.de>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace SebastianBergmann\CodeCoverage\StaticAnalysis;
/**
* @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage
*/
final readonly class LinesOfCode
{
/**
* @var non-negative-int
*/
private int $linesOfCode;
/**
* @var non-negative-int
*/
private int $commentLinesOfCode;
/**
* @var non-negative-int
*/
private int $nonCommentLinesOfCode;
/**
* @param non-negative-int $linesOfCode
* @param non-negative-int $commentLinesOfCode
* @param non-negative-int $nonCommentLinesOfCode
*/
public function __construct(int $linesOfCode, int $commentLinesOfCode, int $nonCommentLinesOfCode)
{
$this->linesOfCode = $linesOfCode;
$this->commentLinesOfCode = $commentLinesOfCode;
$this->nonCommentLinesOfCode = $nonCommentLinesOfCode;
}
/**
* @return non-negative-int
*/
public function linesOfCode(): int
{
return $this->linesOfCode;
}
/**
* @return non-negative-int
*/
public function commentLinesOfCode(): int
{
return $this->commentLinesOfCode;
}
/**
* @return non-negative-int
*/
public function nonCommentLinesOfCode(): int
{
return $this->nonCommentLinesOfCode;
}
}

View File

@ -1,104 +0,0 @@
<?php declare(strict_types=1);
/*
* This file is part of phpunit/php-code-coverage.
*
* (c) Sebastian Bergmann <sebastian@phpunit.de>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace SebastianBergmann\CodeCoverage\StaticAnalysis;
/**
* @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage
*/
final readonly class Method
{
/**
* @var non-empty-string
*/
private string $name;
/**
* @var non-negative-int
*/
private int $startLine;
/**
* @var non-negative-int
*/
private int $endLine;
private Visibility $visibility;
/**
* @var non-empty-string
*/
private string $signature;
/**
* @var positive-int
*/
private int $cyclomaticComplexity;
/**
* @param non-empty-string $name
* @param non-negative-int $startLine
* @param non-negative-int $endLine
* @param non-empty-string $signature
* @param positive-int $cyclomaticComplexity
*/
public function __construct(string $name, int $startLine, int $endLine, string $signature, Visibility $visibility, int $cyclomaticComplexity)
{
$this->name = $name;
$this->startLine = $startLine;
$this->endLine = $endLine;
$this->signature = $signature;
$this->visibility = $visibility;
$this->cyclomaticComplexity = $cyclomaticComplexity;
}
/**
* @return non-empty-string
*/
public function name(): string
{
return $this->name;
}
/**
* @return non-negative-int
*/
public function startLine(): int
{
return $this->startLine;
}
/**
* @return non-negative-int
*/
public function endLine(): int
{
return $this->endLine;
}
/**
* @return non-empty-string
*/
public function signature(): string
{
return $this->signature;
}
public function visibility(): Visibility
{
return $this->visibility;
}
/**
* @return positive-int
*/
public function cyclomaticComplexity(): int
{
return $this->cyclomaticComplexity;
}
}

View File

@ -1,139 +0,0 @@
<?php declare(strict_types=1);
/*
* This file is part of phpunit/php-code-coverage.
*
* (c) Sebastian Bergmann <sebastian@phpunit.de>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace SebastianBergmann\CodeCoverage\StaticAnalysis;
/**
* @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage
*/
final readonly class Trait_
{
/**
* @var non-empty-string
*/
private string $name;
/**
* @var non-empty-string
*/
private string $namespacedName;
private string $namespace;
/**
* @var non-empty-string
*/
private string $file;
/**
* @var non-negative-int
*/
private int $startLine;
/**
* @var non-negative-int
*/
private int $endLine;
/**
* @var list<non-empty-string>
*/
private array $traits;
/**
* @var array<non-empty-string, Method>
*/
private array $methods;
/**
* @param non-empty-string $name
* @param non-empty-string $namespacedName
* @param non-empty-string $file
* @param non-negative-int $startLine
* @param non-negative-int $endLine
* @param list<non-empty-string> $traits
* @param array<non-empty-string, Method> $methods
*/
public function __construct(string $name, string $namespacedName, string $namespace, string $file, int $startLine, int $endLine, array $traits, array $methods)
{
$this->name = $name;
$this->namespacedName = $namespacedName;
$this->namespace = $namespace;
$this->file = $file;
$this->startLine = $startLine;
$this->endLine = $endLine;
$this->traits = $traits;
$this->methods = $methods;
}
/**
* @return non-empty-string
*/
public function name(): string
{
return $this->name;
}
/**
* @return non-empty-string
*/
public function namespacedName(): string
{
return $this->namespacedName;
}
public function isNamespaced(): bool
{
return $this->namespace !== '';
}
public function namespace(): string
{
return $this->namespace;
}
/**
* @return non-empty-string
*/
public function file(): string
{
return $this->file;
}
/**
* @return non-negative-int
*/
public function startLine(): int
{
return $this->startLine;
}
/**
* @return non-negative-int
*/
public function endLine(): int
{
return $this->endLine;
}
/**
* @return list<non-empty-string>
*/
public function traits(): array
{
return $this->traits;
}
/**
* @return array<non-empty-string, Method>
*/
public function methods(): array
{
return $this->methods;
}
}

View File

@ -1,20 +0,0 @@
<?php declare(strict_types=1);
/*
* This file is part of phpunit/php-code-coverage.
*
* (c) Sebastian Bergmann <sebastian@phpunit.de>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace SebastianBergmann\CodeCoverage\StaticAnalysis;
/**
* @internal This enumeration is not covered by the backward compatibility promise for phpunit/php-code-coverage
*/
enum Visibility: string
{
case Public = 'public';
case Protected = 'protected';
case Private = 'private';
}

View File

@ -1,68 +0,0 @@
<?php declare(strict_types=1);
/*
* This file is part of phpunit/php-code-coverage.
*
* (c) Sebastian Bergmann <sebastian@phpunit.de>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace SebastianBergmann\CodeCoverage\Test\Target;
/**
* @immutable
*
* @no-named-arguments Parameter names are not covered by the backward compatibility promise for phpunit/php-code-coverage
*/
final class Class_ extends Target
{
/**
* @var class-string
*/
private string $className;
/**
* @param class-string $className
*/
protected function __construct(string $className)
{
$this->className = $className;
}
public function isClass(): true
{
return true;
}
/**
* @return class-string
*/
public function className(): string
{
return $this->className;
}
/**
* @return non-empty-string
*/
public function key(): string
{
return 'classes';
}
/**
* @return non-empty-string
*/
public function target(): string
{
return $this->className;
}
/**
* @return non-empty-string
*/
public function description(): string
{
return 'Class ' . $this->target();
}
}

View File

@ -1,68 +0,0 @@
<?php declare(strict_types=1);
/*
* This file is part of phpunit/php-code-coverage.
*
* (c) Sebastian Bergmann <sebastian@phpunit.de>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace SebastianBergmann\CodeCoverage\Test\Target;
/**
* @immutable
*
* @no-named-arguments Parameter names are not covered by the backward compatibility promise for phpunit/php-code-coverage
*/
final class ClassesThatExtendClass extends Target
{
/**
* @var class-string
*/
private string $className;
/**
* @param class-string $className
*/
protected function __construct(string $className)
{
$this->className = $className;
}
public function isClassesThatExtendClass(): true
{
return true;
}
/**
* @return class-string
*/
public function className(): string
{
return $this->className;
}
/**
* @return non-empty-string
*/
public function key(): string
{
return 'classesThatExtendClass';
}
/**
* @return non-empty-string
*/
public function target(): string
{
return $this->className;
}
/**
* @return non-empty-string
*/
public function description(): string
{
return 'Classes that extend class ' . $this->target();
}
}

View File

@ -1,68 +0,0 @@
<?php declare(strict_types=1);
/*
* This file is part of phpunit/php-code-coverage.
*
* (c) Sebastian Bergmann <sebastian@phpunit.de>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace SebastianBergmann\CodeCoverage\Test\Target;
/**
* @immutable
*
* @no-named-arguments Parameter names are not covered by the backward compatibility promise for phpunit/php-code-coverage
*/
final class ClassesThatImplementInterface extends Target
{
/**
* @var class-string
*/
private string $interfaceName;
/**
* @param class-string $interfaceName
*/
protected function __construct(string $interfaceName)
{
$this->interfaceName = $interfaceName;
}
public function isClassesThatImplementInterface(): true
{
return true;
}
/**
* @return class-string
*/
public function interfaceName(): string
{
return $this->interfaceName;
}
/**
* @return non-empty-string
*/
public function key(): string
{
return 'classesThatImplementInterface';
}
/**
* @return non-empty-string
*/
public function target(): string
{
return $this->interfaceName;
}
/**
* @return non-empty-string
*/
public function description(): string
{
return 'Classes that implement interface ' . $this->target();
}
}

View File

@ -1,68 +0,0 @@
<?php declare(strict_types=1);
/*
* This file is part of phpunit/php-code-coverage.
*
* (c) Sebastian Bergmann <sebastian@phpunit.de>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace SebastianBergmann\CodeCoverage\Test\Target;
/**
* @immutable
*
* @no-named-arguments Parameter names are not covered by the backward compatibility promise for phpunit/php-code-coverage
*/
final class Function_ extends Target
{
/**
* @var non-empty-string
*/
private string $functionName;
/**
* @param non-empty-string $functionName
*/
protected function __construct(string $functionName)
{
$this->functionName = $functionName;
}
public function isFunction(): true
{
return true;
}
/**
* @return non-empty-string
*/
public function functionName(): string
{
return $this->functionName;
}
/**
* @return non-empty-string
*/
public function key(): string
{
return 'functions';
}
/**
* @return non-empty-string
*/
public function target(): string
{
return $this->functionName;
}
/**
* @return non-empty-string
*/
public function description(): string
{
return 'Function ' . $this->target();
}
}

View File

@ -1,249 +0,0 @@
<?php declare(strict_types=1);
/*
* This file is part of phpunit/php-code-coverage.
*
* (c) Sebastian Bergmann <sebastian@phpunit.de>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace SebastianBergmann\CodeCoverage\Test\Target;
use function array_keys;
use function array_merge;
use function array_slice;
use function array_unique;
use function count;
use function explode;
use function implode;
use function range;
use SebastianBergmann\CodeCoverage\Filter;
use SebastianBergmann\CodeCoverage\StaticAnalysis\Class_;
use SebastianBergmann\CodeCoverage\StaticAnalysis\FileAnalyser;
use SebastianBergmann\CodeCoverage\StaticAnalysis\Trait_;
/**
* @phpstan-import-type TargetMap from Mapper
* @phpstan-import-type TargetMapPart from Mapper
*
* @immutable
*
* @no-named-arguments Parameter names are not covered by the backward compatibility promise for phpunit/php-code-coverage
*
* @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage
*/
final readonly class MapBuilder
{
/**
* @return TargetMap
*/
public function build(Filter $filter, FileAnalyser $analyser): array
{
$namespaces = [];
$classes = [];
$classDetails = [];
$classesThatExtendClass = [];
$classesThatImplementInterface = [];
$traits = [];
$methods = [];
$functions = [];
$reverseLookup = [];
foreach ($filter->files() as $file) {
foreach ($analyser->traitsIn($file) as $trait) {
if ($trait->isNamespaced()) {
$this->processNamespace($namespaces, $trait->namespace(), $file, $trait->startLine(), $trait->endLine());
}
$this->process($traits, $trait->namespacedName(), $file, $trait->startLine(), $trait->endLine());
$this->processMethods($trait, $file, $methods, $reverseLookup);
}
}
foreach ($filter->files() as $file) {
foreach ($analyser->traitsIn($file) as $trait) {
foreach ($trait->traits() as $traitName) {
if (!isset($traits[$traitName])) {
continue;
}
$file = array_keys($traits[$traitName])[0];
if (!isset($traits[$trait->namespacedName()][$file])) {
$traits[$trait->namespacedName()][$file] = $traits[$traitName][$file];
continue;
}
$traits[$trait->namespacedName()][$file] = array_unique(
array_merge(
$traits[$trait->namespacedName()][$file],
$traits[$traitName][$file],
),
);
}
}
}
foreach ($filter->files() as $file) {
foreach ($analyser->interfacesIn($file) as $interface) {
$classesThatImplementInterface[$interface->namespacedName()] = [];
}
foreach ($analyser->classesIn($file) as $class) {
if ($class->isNamespaced()) {
$this->processNamespace($namespaces, $class->namespace(), $file, $class->startLine(), $class->endLine());
}
$this->process($classes, $class->namespacedName(), $file, $class->startLine(), $class->endLine());
foreach ($class->traits() as $traitName) {
if (!isset($traits[$traitName])) {
continue;
}
foreach ($traits[$traitName] as $file => $lines) {
if (!isset($classes[$class->namespacedName()][$file])) {
$classes[$class->namespacedName()][$file] = $lines;
continue;
}
$classes[$class->namespacedName()][$file] = array_unique(
array_merge(
$classes[$class->namespacedName()][$file],
$lines,
),
);
}
}
$this->processMethods($class, $file, $methods, $reverseLookup);
$classesThatExtendClass[$class->namespacedName()] = [];
$classDetails[] = $class;
}
foreach ($analyser->functionsIn($file) as $function) {
if ($function->isNamespaced()) {
$this->processNamespace($namespaces, $function->namespace(), $file, $function->startLine(), $function->endLine());
}
$this->process($functions, $function->namespacedName(), $file, $function->startLine(), $function->endLine());
foreach (range($function->startLine(), $function->endLine()) as $line) {
$reverseLookup[$file . ':' . $line] = $function->namespacedName();
}
}
}
foreach (array_keys($namespaces) as $namespace) {
foreach (array_keys($namespaces[$namespace]) as $file) {
$namespaces[$namespace][$file] = array_unique($namespaces[$namespace][$file]);
}
}
foreach ($classDetails as $class) {
foreach ($class->interfaces() as $interfaceName) {
if (!isset($classesThatImplementInterface[$interfaceName])) {
continue;
}
$this->process($classesThatImplementInterface, $interfaceName, $class->file(), $class->startLine(), $class->endLine());
}
if (!$class->hasParent()) {
continue;
}
if (!isset($classesThatExtendClass[$class->parentClass()])) {
continue;
}
$this->process($classesThatExtendClass, $class->parentClass(), $class->file(), $class->startLine(), $class->endLine());
}
foreach (array_keys($classesThatImplementInterface) as $className) {
if ($classesThatImplementInterface[$className] !== []) {
continue;
}
unset($classesThatImplementInterface[$className]);
}
foreach (array_keys($classesThatExtendClass) as $className) {
if ($classesThatExtendClass[$className] !== []) {
continue;
}
unset($classesThatExtendClass[$className]);
}
return [
'namespaces' => $namespaces,
'traits' => $traits,
'classes' => $classes,
'classesThatExtendClass' => $classesThatExtendClass,
'classesThatImplementInterface' => $classesThatImplementInterface,
'methods' => $methods,
'functions' => $functions,
'reverseLookup' => $reverseLookup,
];
}
private function processMethods(Class_|Trait_ $classOrTrait, string $file, array &$methods, array &$reverseLookup): void
{
foreach ($classOrTrait->methods() as $method) {
$methodName = $classOrTrait->namespacedName() . '::' . $method->name();
$this->process($methods, $methodName, $file, $method->startLine(), $method->endLine());
foreach (range($method->startLine(), $method->endLine()) as $line) {
$reverseLookup[$file . ':' . $line] = $methodName;
}
}
}
/**
* @param TargetMapPart $data
* @param non-empty-string $namespace
* @param non-empty-string $file
* @param positive-int $startLine
* @param positive-int $endLine
*
* @param-out TargetMapPart $data
*/
private function processNamespace(array &$data, string $namespace, string $file, int $startLine, int $endLine): void
{
$parts = explode('\\', $namespace);
foreach (range(1, count($parts)) as $i) {
$this->process($data, implode('\\', array_slice($parts, 0, $i)), $file, $startLine, $endLine);
}
}
/**
* @param TargetMapPart $data
* @param non-empty-string $unit
* @param non-empty-string $file
* @param positive-int $startLine
* @param positive-int $endLine
*
* @param-out TargetMapPart $data
*/
private function process(array &$data, string $unit, string $file, int $startLine, int $endLine): void
{
if (!isset($data[$unit])) {
$data[$unit] = [];
}
if (!isset($data[$unit][$file])) {
$data[$unit][$file] = [];
}
$data[$unit][$file] = array_merge(
$data[$unit][$file],
range($startLine, $endLine),
);
}
}

View File

@ -1,93 +0,0 @@
<?php declare(strict_types=1);
/*
* This file is part of phpunit/php-code-coverage.
*
* (c) Sebastian Bergmann <sebastian@phpunit.de>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace SebastianBergmann\CodeCoverage\Test\Target;
use function array_merge;
use function array_unique;
/**
* @phpstan-type TargetMap array{namespaces: TargetMapPart, traits: TargetMapPart, classes: TargetMapPart, classesThatExtendClass: TargetMapPart, classesThatImplementInterface: TargetMapPart, methods: TargetMapPart, functions: TargetMapPart, reverseLookup: ReverseLookup}
* @phpstan-type TargetMapPart array<non-empty-string, array<non-empty-string, list<positive-int>>>
* @phpstan-type ReverseLookup array<non-empty-string, non-empty-string>
*
* @immutable
*
* @no-named-arguments Parameter names are not covered by the backward compatibility promise for phpunit/php-code-coverage
*
* @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage
*/
final readonly class Mapper
{
/**
* @var TargetMap
*/
private array $map;
/**
* @param TargetMap $map
*/
public function __construct(array $map)
{
$this->map = $map;
}
/**
* @return array<non-empty-string, list<positive-int>>
*/
public function mapTargets(TargetCollection $targets): array
{
$result = [];
foreach ($targets as $target) {
foreach ($this->mapTarget($target) as $file => $lines) {
if (!isset($result[$file])) {
$result[$file] = $lines;
continue;
}
$result[$file] = array_unique(array_merge($result[$file], $lines));
}
}
return $result;
}
/**
* @throws InvalidCodeCoverageTargetException
*
* @return array<non-empty-string, list<positive-int>>
*/
public function mapTarget(Target $target): array
{
if (!isset($this->map[$target->key()][$target->target()])) {
throw new InvalidCodeCoverageTargetException($target);
}
return $this->map[$target->key()][$target->target()];
}
/**
* @param non-empty-string $file
* @param positive-int $line
*
* @return non-empty-string
*/
public function lookup(string $file, int $line): string
{
$key = $file . ':' . $line;
if (isset($this->map['reverseLookup'][$key])) {
return $this->map['reverseLookup'][$key];
}
return $key;
}
}

View File

@ -1,83 +0,0 @@
<?php declare(strict_types=1);
/*
* This file is part of phpunit/php-code-coverage.
*
* (c) Sebastian Bergmann <sebastian@phpunit.de>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace SebastianBergmann\CodeCoverage\Test\Target;
/**
* @immutable
*
* @no-named-arguments Parameter names are not covered by the backward compatibility promise for phpunit/php-code-coverage
*/
final class Method extends Target
{
/**
* @var class-string
*/
private string $className;
/**
* @var non-empty-string
*/
private string $methodName;
/**
* @param class-string $className
* @param non-empty-string $methodName
*/
protected function __construct(string $className, string $methodName)
{
$this->className = $className;
$this->methodName = $methodName;
}
public function isMethod(): true
{
return true;
}
/**
* @return class-string
*/
public function className(): string
{
return $this->className;
}
/**
* @return non-empty-string
*/
public function methodName(): string
{
return $this->methodName;
}
/**
* @return non-empty-string
*/
public function key(): string
{
return 'methods';
}
/**
* @return non-empty-string
*/
public function target(): string
{
return $this->className . '::' . $this->methodName;
}
/**
* @return non-empty-string
*/
public function description(): string
{
return 'Method ' . $this->target();
}
}

View File

@ -1,68 +0,0 @@
<?php declare(strict_types=1);
/*
* This file is part of phpunit/php-code-coverage.
*
* (c) Sebastian Bergmann <sebastian@phpunit.de>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace SebastianBergmann\CodeCoverage\Test\Target;
/**
* @immutable
*
* @no-named-arguments Parameter names are not covered by the backward compatibility promise for phpunit/php-code-coverage
*/
final class Namespace_ extends Target
{
/**
* @var non-empty-string
*/
private string $namespace;
/**
* @param non-empty-string $namespace
*/
protected function __construct(string $namespace)
{
$this->namespace = $namespace;
}
public function isNamespace(): true
{
return true;
}
/**
* @return non-empty-string
*/
public function namespace(): string
{
return $this->namespace;
}
/**
* @return non-empty-string
*/
public function key(): string
{
return 'namespaces';
}
/**
* @return non-empty-string
*/
public function target(): string
{
return $this->namespace;
}
/**
* @return non-empty-string
*/
public function description(): string
{
return 'Namespace ' . $this->target();
}
}

View File

@ -1,125 +0,0 @@
<?php declare(strict_types=1);
/*
* This file is part of phpunit/php-code-coverage.
*
* (c) Sebastian Bergmann <sebastian@phpunit.de>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace SebastianBergmann\CodeCoverage\Test\Target;
/**
* @immutable
*
* @no-named-arguments Parameter names are not covered by the backward compatibility promise for phpunit/php-code-coverage
*/
abstract class Target
{
/**
* @param non-empty-string $namespace
*/
public static function forNamespace(string $namespace): Namespace_
{
return new Namespace_($namespace);
}
/**
* @param class-string $className
*/
public static function forClass(string $className): Class_
{
return new Class_($className);
}
/**
* @param class-string $className
* @param non-empty-string $methodName
*/
public static function forMethod(string $className, string $methodName): Method
{
return new Method($className, $methodName);
}
/**
* @param class-string $interfaceName
*/
public static function forClassesThatImplementInterface(string $interfaceName): ClassesThatImplementInterface
{
return new ClassesThatImplementInterface($interfaceName);
}
/**
* @param class-string $className
*/
public static function forClassesThatExtendClass(string $className): ClassesThatExtendClass
{
return new ClassesThatExtendClass($className);
}
/**
* @param non-empty-string $functionName
*/
public static function forFunction(string $functionName): Function_
{
return new Function_($functionName);
}
/**
* @param trait-string $traitName
*/
public static function forTrait(string $traitName): Trait_
{
return new Trait_($traitName);
}
public function isNamespace(): bool
{
return false;
}
public function isClass(): bool
{
return false;
}
public function isMethod(): bool
{
return false;
}
public function isClassesThatImplementInterface(): bool
{
return false;
}
public function isClassesThatExtendClass(): bool
{
return false;
}
public function isFunction(): bool
{
return false;
}
public function isTrait(): bool
{
return false;
}
/**
* @return non-empty-string
*/
abstract public function key(): string;
/**
* @return non-empty-string
*/
abstract public function target(): string;
/**
* @return non-empty-string
*/
abstract public function description(): string;
}

View File

@ -1,70 +0,0 @@
<?php declare(strict_types=1);
/*
* This file is part of phpunit/php-code-coverage.
*
* (c) Sebastian Bergmann <sebastian@phpunit.de>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace SebastianBergmann\CodeCoverage\Test\Target;
use function count;
use Countable;
use IteratorAggregate;
/**
* @template-implements IteratorAggregate<int, Target>
*
* @immutable
*
* @no-named-arguments Parameter names are not covered by the backward compatibility promise for phpunit/php-code-coverage
*/
final readonly class TargetCollection implements Countable, IteratorAggregate
{
/**
* @var list<Target>
*/
private array $targets;
/**
* @param list<Target> $targets
*/
public static function fromArray(array $targets): self
{
return new self(...$targets);
}
private function __construct(Target ...$targets)
{
$this->targets = $targets;
}
/**
* @return list<Target>
*/
public function asArray(): array
{
return $this->targets;
}
public function count(): int
{
return count($this->targets);
}
public function isEmpty(): bool
{
return $this->count() === 0;
}
public function isNotEmpty(): bool
{
return $this->count() > 0;
}
public function getIterator(): TargetCollectionIterator
{
return new TargetCollectionIterator($this);
}
}

View File

@ -1,57 +0,0 @@
<?php declare(strict_types=1);
/*
* This file is part of phpunit/php-code-coverage.
*
* (c) Sebastian Bergmann <sebastian@phpunit.de>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace SebastianBergmann\CodeCoverage\Test\Target;
use function count;
use Iterator;
/**
* @template-implements Iterator<int, Target>
*
* @no-named-arguments Parameter names are not covered by the backward compatibility promise for phpunit/php-code-coverage
*/
final class TargetCollectionIterator implements Iterator
{
/**
* @var list<Target>
*/
private readonly array $targets;
private int $position = 0;
public function __construct(TargetCollection $metadata)
{
$this->targets = $metadata->asArray();
}
public function rewind(): void
{
$this->position = 0;
}
public function valid(): bool
{
return $this->position < count($this->targets);
}
public function key(): int
{
return $this->position;
}
public function current(): Target
{
return $this->targets[$this->position];
}
public function next(): void
{
$this->position++;
}
}

View File

@ -1,39 +0,0 @@
<?php declare(strict_types=1);
/*
* This file is part of phpunit/php-code-coverage.
*
* (c) Sebastian Bergmann <sebastian@phpunit.de>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace SebastianBergmann\CodeCoverage\Test\Target;
use function implode;
/**
* @no-named-arguments Parameter names are not covered by the backward compatibility promise for phpunit/php-code-coverage
*
* @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage
*/
final readonly class TargetCollectionValidator
{
public function validate(Mapper $mapper, TargetCollection $targets): ValidationResult
{
$errors = [];
foreach ($targets as $target) {
try {
$mapper->mapTarget($target);
} catch (InvalidCodeCoverageTargetException $e) {
$errors[] = $e->getMessage();
}
}
if ($errors === []) {
return ValidationResult::success();
}
return ValidationResult::failure(implode("\n", $errors));
}
}

View File

@ -1,68 +0,0 @@
<?php declare(strict_types=1);
/*
* This file is part of phpunit/php-code-coverage.
*
* (c) Sebastian Bergmann <sebastian@phpunit.de>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace SebastianBergmann\CodeCoverage\Test\Target;
/**
* @immutable
*
* @no-named-arguments Parameter names are not covered by the backward compatibility promise for phpunit/php-code-coverage
*/
final class Trait_ extends Target
{
/**
* @var trait-string
*/
private string $traitName;
/**
* @param trait-string $traitName
*/
protected function __construct(string $traitName)
{
$this->traitName = $traitName;
}
public function isTrait(): true
{
return true;
}
/**
* @return trait-string
*/
public function traitName(): string
{
return $this->traitName;
}
/**
* @return non-empty-string
*/
public function key(): string
{
return 'traits';
}
/**
* @return non-empty-string
*/
public function target(): string
{
return $this->traitName;
}
/**
* @return non-empty-string
*/
public function description(): string
{
return 'Trait ' . $this->target();
}
}

View File

@ -1,46 +0,0 @@
<?php declare(strict_types=1);
/*
* This file is part of phpunit/php-code-coverage.
*
* (c) Sebastian Bergmann <sebastian@phpunit.de>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace SebastianBergmann\CodeCoverage\Test\Target;
/**
* @immutable
*
* @no-named-arguments Parameter names are not covered by the backward compatibility promise for phpunit/php-code-coverage
*/
final readonly class ValidationFailure extends ValidationResult
{
/**
* @var non-empty-string
*/
private string $message;
/**
* @param non-empty-string $message
*
* @noinspection PhpMissingParentConstructorInspection
*/
protected function __construct(string $message)
{
$this->message = $message;
}
public function isFailure(): true
{
return true;
}
/**
* @return non-empty-string
*/
public function message(): string
{
return $this->message;
}
}

View File

@ -1,51 +0,0 @@
<?php declare(strict_types=1);
/*
* This file is part of phpunit/php-code-coverage.
*
* (c) Sebastian Bergmann <sebastian@phpunit.de>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace SebastianBergmann\CodeCoverage\Test\Target;
/**
* @immutable
*
* @no-named-arguments Parameter names are not covered by the backward compatibility promise for phpunit/php-code-coverage
*/
abstract readonly class ValidationResult
{
public static function success(): ValidationSuccess
{
return new ValidationSuccess;
}
/**
* @param non-empty-string $message
*/
public static function failure(string $message): ValidationFailure
{
return new ValidationFailure($message);
}
protected function __construct()
{
}
/**
* @phpstan-assert-if-true ValidationSuccess $this
*/
public function isSuccess(): bool
{
return false;
}
/**
* @phpstan-assert-if-true ValidationFailure $this
*/
public function isFailure(): bool
{
return false;
}
}

View File

@ -14,10 +14,10 @@ use function sprintf;
/** /**
* @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage
*/ */
final readonly class Percentage final class Percentage
{ {
private float $fraction; private readonly float $fraction;
private float $total; private readonly float $total;
public static function fromFractionAndTotal(float $fraction, float $total): self public static function fromFractionAndTotal(float $fraction, float $total): self
{ {

View File

@ -19,7 +19,7 @@ final class Version
public static function id(): string public static function id(): string
{ {
if (self::$version === '') { if (self::$version === '') {
self::$version = (new VersionId('12.0', dirname(__DIR__)))->asString(); self::$version = (new VersionId('11.0.8', dirname(__DIR__)))->asString();
} }
return self::$version; return self::$version;

View File

@ -2,12 +2,6 @@
All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](http://semver.org/). All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](http://semver.org/).
## [6.0.0] - 2025-02-07
### Removed
* This component is no longer supported on PHP 8.2
## [5.1.0] - 2024-08-27 ## [5.1.0] - 2024-08-27
### Added ### Added
@ -174,7 +168,6 @@ No changes
* [#23](https://github.com/sebastianbergmann/php-file-iterator/pull/23): Added support for wildcards (glob) in exclude * [#23](https://github.com/sebastianbergmann/php-file-iterator/pull/23): Added support for wildcards (glob) in exclude
[6.0.0]: https://github.com/sebastianbergmann/php-file-iterator/compare/5.1...main
[5.1.0]: https://github.com/sebastianbergmann/php-file-iterator/compare/5.0.1...5.1.0 [5.1.0]: https://github.com/sebastianbergmann/php-file-iterator/compare/5.0.1...5.1.0
[5.0.1]: https://github.com/sebastianbergmann/php-file-iterator/compare/5.0.0...5.0.1 [5.0.1]: https://github.com/sebastianbergmann/php-file-iterator/compare/5.0.0...5.0.1
[5.0.0]: https://github.com/sebastianbergmann/php-file-iterator/compare/4.1...5.0.0 [5.0.0]: https://github.com/sebastianbergmann/php-file-iterator/compare/4.1...5.0.0

View File

@ -1,6 +1,6 @@
BSD 3-Clause License BSD 3-Clause License
Copyright (c) 2009-2025, Sebastian Bergmann Copyright (c) 2009-2024, Sebastian Bergmann
All rights reserved. All rights reserved.
Redistribution and use in source and binary forms, with or without Redistribution and use in source and binary forms, with or without

View File

@ -21,18 +21,17 @@
}, },
"config": { "config": {
"platform": { "platform": {
"php": "8.3.0" "php": "8.2.0"
}, },
"optimize-autoloader": true, "optimize-autoloader": true,
"sort-packages": true "sort-packages": true
}, },
"prefer-stable": true, "prefer-stable": true,
"minimum-stability": "dev",
"require": { "require": {
"php": ">=8.3" "php": ">=8.2"
}, },
"require-dev": { "require-dev": {
"phpunit/phpunit": "^12.0" "phpunit/phpunit": "^11.0"
}, },
"autoload": { "autoload": {
"classmap": [ "classmap": [
@ -41,7 +40,7 @@
}, },
"extra": { "extra": {
"branch-alias": { "branch-alias": {
"dev-main": "6.0-dev" "dev-main": "5.0-dev"
} }
} }
} }

View File

@ -37,8 +37,6 @@ final class Factory
* @param list<non-empty-string>|string $suffixes * @param list<non-empty-string>|string $suffixes
* @param list<non-empty-string>|string $prefixes * @param list<non-empty-string>|string $prefixes
* @param list<non-empty-string> $exclude * @param list<non-empty-string> $exclude
*
* @phpstan-ignore missingType.generics
*/ */
public function getFileIterator(array|string $paths, array|string $suffixes = '', array|string $prefixes = '', array $exclude = []): AppendIterator public function getFileIterator(array|string $paths, array|string $suffixes = '', array|string $prefixes = '', array $exclude = []): AppendIterator
{ {
@ -115,7 +113,7 @@ final class Factory
* *
* @return list<string> * @return list<string>
*/ */
private function globstar(string $pattern): array private function globstar(string $pattern)
{ {
if (stripos($pattern, '**') === false) { if (stripos($pattern, '**') === false) {
$files = glob($pattern, GLOB_ONLYDIR); $files = glob($pattern, GLOB_ONLYDIR);
@ -127,24 +125,23 @@ final class Factory
$patterns = [$rootPattern . $restPattern]; $patterns = [$rootPattern . $restPattern];
$rootPattern .= '/*'; $rootPattern .= '/*';
while ($directories = glob($rootPattern, GLOB_ONLYDIR)) { while ($dirs = glob($rootPattern, GLOB_ONLYDIR)) {
$rootPattern .= '/*'; $rootPattern .= '/*';
foreach ($directories as $directory) { foreach ($dirs as $dir) {
$patterns[] = $directory . $restPattern; $patterns[] = $dir . $restPattern;
} }
} }
$files = []; $files = [];
foreach ($patterns as $_pattern) { foreach ($patterns as $pat) {
$files = array_merge($files, $this->globstar($_pattern)); $files = array_merge($files, $this->globstar($pat));
} }
} }
if ($files !== false) { if ($files !== false) {
$files = array_unique($files); $files = array_unique($files);
sort($files); sort($files);
return $files; return $files;

View File

@ -9,6 +9,7 @@
*/ */
namespace SebastianBergmann\FileIterator; namespace SebastianBergmann\FileIterator;
use function assert;
use function preg_match; use function preg_match;
use function realpath; use function realpath;
use function str_ends_with; use function str_ends_with;
@ -24,8 +25,8 @@ use SplFileInfo;
*/ */
final class Iterator extends FilterIterator final class Iterator extends FilterIterator
{ {
public const int PREFIX = 0; public const PREFIX = 0;
public const int SUFFIX = 1; public const SUFFIX = 1;
private false|string $basePath; private false|string $basePath;
/** /**
@ -55,6 +56,8 @@ final class Iterator extends FilterIterator
{ {
$current = $this->getInnerIterator()->current(); $current = $this->getInnerIterator()->current();
assert($current instanceof SplFileInfo);
$filename = $current->getFilename(); $filename = $current->getFilename();
$realPath = $current->getRealPath(); $realPath = $current->getRealPath();

View File

@ -2,12 +2,6 @@
All notable changes are documented in this file using the [Keep a CHANGELOG](https://keepachangelog.com/) principles. All notable changes are documented in this file using the [Keep a CHANGELOG](https://keepachangelog.com/) principles.
## [6.0.0] - 2025-02-07
### Removed
* This component is no longer supported on PHP 8.2
## [5.0.1] - 2024-07-03 ## [5.0.1] - 2024-07-03
### Changed ### Changed
@ -65,7 +59,6 @@ All notable changes are documented in this file using the [Keep a CHANGELOG](htt
* This component is no longer supported on PHP 7.1 and PHP 7.2 * This component is no longer supported on PHP 7.1 and PHP 7.2
[6.0.0]: https://github.com/sebastianbergmann/php-invoker/compare/5.0...main
[5.0.1]: https://github.com/sebastianbergmann/php-invoker/compare/5.0.1...5.0.1 [5.0.1]: https://github.com/sebastianbergmann/php-invoker/compare/5.0.1...5.0.1
[5.0.0]: https://github.com/sebastianbergmann/php-invoker/compare/4.0...5.0.0 [5.0.0]: https://github.com/sebastianbergmann/php-invoker/compare/4.0...5.0.0
[4.0.0]: https://github.com/sebastianbergmann/php-invoker/compare/3.1.1...4.0.0 [4.0.0]: https://github.com/sebastianbergmann/php-invoker/compare/3.1.1...4.0.0

View File

@ -1,6 +1,6 @@
BSD 3-Clause License BSD 3-Clause License
Copyright (c) 2011-2025, Sebastian Bergmann Copyright (c) 2011-2024, Sebastian Bergmann
All rights reserved. All rights reserved.
Redistribution and use in source and binary forms, with or without Redistribution and use in source and binary forms, with or without

View File

@ -1,6 +1,6 @@
# phpunit/php-invoker # phpunit/php-invoker
[![Latest Stable Version](https://poser.pugx.org/phpunit/php-invoker/v)](https://packagist.org/packages/phpunit/php-invoker) [![Latest Stable Version](https://poser.pugx.org/phpunit/php-invoker/v/stable.png)](https://packagist.org/packages/phpunit/php-invoker)
[![CI Status](https://github.com/sebastianbergmann/php-invoker/workflows/CI/badge.svg)](https://github.com/sebastianbergmann/php-invoker/actions) [![CI Status](https://github.com/sebastianbergmann/php-invoker/workflows/CI/badge.svg)](https://github.com/sebastianbergmann/php-invoker/actions)
[![codecov](https://codecov.io/gh/sebastianbergmann/php-invoker/branch/main/graph/badge.svg)](https://codecov.io/gh/sebastianbergmann/php-invoker) [![codecov](https://codecov.io/gh/sebastianbergmann/php-invoker/branch/main/graph/badge.svg)](https://codecov.io/gh/sebastianbergmann/php-invoker)

View File

@ -18,21 +18,20 @@
"issues": "https://github.com/sebastianbergmann/php-invoker/issues", "issues": "https://github.com/sebastianbergmann/php-invoker/issues",
"security": "https://github.com/sebastianbergmann/php-invoker/security/policy" "security": "https://github.com/sebastianbergmann/php-invoker/security/policy"
}, },
"minimum-stability": "dev",
"prefer-stable": true, "prefer-stable": true,
"config": { "config": {
"platform": { "platform": {
"php": "8.3.0" "php": "8.2.0"
}, },
"optimize-autoloader": true, "optimize-autoloader": true,
"sort-packages": true "sort-packages": true
}, },
"require": { "require": {
"php": ">=8.3" "php": ">=8.2"
}, },
"require-dev": { "require-dev": {
"ext-pcntl": "*", "ext-pcntl": "*",
"phpunit/phpunit": "^12.0-dev" "phpunit/phpunit": "^11.0"
}, },
"autoload": { "autoload": {
"classmap": [ "classmap": [
@ -49,7 +48,7 @@
}, },
"extra": { "extra": {
"branch-alias": { "branch-alias": {
"dev-main": "6.0-dev" "dev-main": "5.0-dev"
} }
} }
} }

View File

@ -9,7 +9,6 @@
*/ */
namespace SebastianBergmann\Invoker; namespace SebastianBergmann\Invoker;
use const PHP_EOL;
use function extension_loaded; use function extension_loaded;
use function function_exists; use function function_exists;
use function implode; use function implode;

View File

@ -2,12 +2,6 @@
All notable changes are documented in this file using the [Keep a CHANGELOG](http://keepachangelog.com/) principles. All notable changes are documented in this file using the [Keep a CHANGELOG](http://keepachangelog.com/) principles.
## [5.0.0] - 2025-02-07
### Removed
* This component is no longer supported on PHP 8.2
## [4.0.1] - 2024-07-03 ## [4.0.1] - 2024-07-03
### Changed ### Changed
@ -67,7 +61,6 @@ All notable changes are documented in this file using the [Keep a CHANGELOG](htt
* Removed support for PHP 5.3, PHP 5.4, PHP 5.5, PHP 5.6, PHP 7.0, PHP 7.1, and PHP 7.2 * Removed support for PHP 5.3, PHP 5.4, PHP 5.5, PHP 5.6, PHP 7.0, PHP 7.1, and PHP 7.2
[5.0.0]: https://github.com/sebastianbergmann/php-text-template/compare/4.0...main
[4.0.1]: https://github.com/sebastianbergmann/php-text-template/compare/4.0.0...4.0.1 [4.0.1]: https://github.com/sebastianbergmann/php-text-template/compare/4.0.0...4.0.1
[4.0.0]: https://github.com/sebastianbergmann/php-text-template/compare/3.0...4.0.0 [4.0.0]: https://github.com/sebastianbergmann/php-text-template/compare/3.0...4.0.0
[3.0.1]: https://github.com/sebastianbergmann/php-text-template/compare/3.0.0...3.0.1 [3.0.1]: https://github.com/sebastianbergmann/php-text-template/compare/3.0.0...3.0.1

View File

@ -1,6 +1,6 @@
BSD 3-Clause License BSD 3-Clause License
Copyright (c) 2009-2025, Sebastian Bergmann Copyright (c) 2009-2024, Sebastian Bergmann
All rights reserved. All rights reserved.
Redistribution and use in source and binary forms, with or without Redistribution and use in source and binary forms, with or without

View File

@ -1,4 +1,4 @@
[![Latest Stable Version](https://poser.pugx.org/phpunit/php-text-template/v)](https://packagist.org/packages/phpunit/php-text-template) [![Latest Stable Version](https://poser.pugx.org/phpunit/php-text-template/v/stable.png)](https://packagist.org/packages/phpunit/php-text-template)
[![CI Status](https://github.com/sebastianbergmann/php-text-template/workflows/CI/badge.svg)](https://github.com/sebastianbergmann/php-text-template/actions) [![CI Status](https://github.com/sebastianbergmann/php-text-template/workflows/CI/badge.svg)](https://github.com/sebastianbergmann/php-text-template/actions)
[![codecov](https://codecov.io/gh/sebastianbergmann/php-text-template/branch/main/graph/badge.svg)](https://codecov.io/gh/sebastianbergmann/php-text-template) [![codecov](https://codecov.io/gh/sebastianbergmann/php-text-template/branch/main/graph/badge.svg)](https://codecov.io/gh/sebastianbergmann/php-text-template)

View File

@ -20,18 +20,17 @@
}, },
"config": { "config": {
"platform": { "platform": {
"php": "8.3.0" "php": "8.2.0"
}, },
"optimize-autoloader": true, "optimize-autoloader": true,
"sort-packages": true "sort-packages": true
}, },
"minimum-stability": "dev",
"prefer-stable": true, "prefer-stable": true,
"require": { "require": {
"php": ">=8.3" "php": ">=8.2"
}, },
"require-dev": { "require-dev": {
"phpunit/phpunit": "^12.0-dev" "phpunit/phpunit": "^11.0"
}, },
"autoload": { "autoload": {
"classmap": [ "classmap": [
@ -40,7 +39,7 @@
}, },
"extra": { "extra": {
"branch-alias": { "branch-alias": {
"dev-main": "5.0-dev" "dev-main": "4.0-dev"
} }
} }
} }

View File

@ -2,12 +2,6 @@
All notable changes are documented in this file using the [Keep a CHANGELOG](http://keepachangelog.com/) principles. All notable changes are documented in this file using the [Keep a CHANGELOG](http://keepachangelog.com/) principles.
## [8.0.0] - 2025-02-07
### Removed
* This component is no longer supported on PHP 8.1
## [7.0.1] - 2024-07-03 ## [7.0.1] - 2024-07-03
### Changed ### Changed
@ -145,7 +139,6 @@ All notable changes are documented in this file using the [Keep a CHANGELOG](htt
* This component is no longer supported on PHP 5.3, PHP 5.4, PHP 5.5, PHP 5.6, and PHP 7.0 * This component is no longer supported on PHP 5.3, PHP 5.4, PHP 5.5, PHP 5.6, and PHP 7.0
[8.0.0]: https://github.com/sebastianbergmann/php-timer/compare/7.0...main
[7.0.1]: https://github.com/sebastianbergmann/php-timer/compare/7.0.0...7.0.1 [7.0.1]: https://github.com/sebastianbergmann/php-timer/compare/7.0.0...7.0.1
[7.0.0]: https://github.com/sebastianbergmann/php-timer/compare/6.0...7.0.0 [7.0.0]: https://github.com/sebastianbergmann/php-timer/compare/6.0...7.0.0
[6.0.0]: https://github.com/sebastianbergmann/php-timer/compare/5.0.3...6.0.0 [6.0.0]: https://github.com/sebastianbergmann/php-timer/compare/5.0.3...6.0.0

Some files were not shown because too many files have changed in this diff Show More