2016-11-21 03:49:06 +01:00
|
|
|
<?php
|
2021-12-15 04:58:32 +01:00
|
|
|
|
2018-11-06 03:57:36 +01:00
|
|
|
namespace Psalm\Internal\Analyzer;
|
2016-11-21 03:49:06 +01:00
|
|
|
|
2017-07-25 22:11:02 +02:00
|
|
|
use Psalm\Aliases;
|
2018-11-06 03:57:36 +01:00
|
|
|
use Psalm\Codebase;
|
2021-12-03 20:11:20 +01:00
|
|
|
use Psalm\NodeTypeProvider;
|
2016-11-21 03:49:06 +01:00
|
|
|
use Psalm\StatementsSource;
|
2021-12-13 16:28:14 +01:00
|
|
|
use Psalm\Type\Union;
|
2016-11-21 03:49:06 +01:00
|
|
|
|
2018-12-02 00:37:49 +01:00
|
|
|
/**
|
|
|
|
* @internal
|
|
|
|
*/
|
2018-11-06 03:57:36 +01:00
|
|
|
abstract class SourceAnalyzer implements StatementsSource
|
2016-11-21 03:49:06 +01:00
|
|
|
{
|
2017-01-02 21:31:18 +01:00
|
|
|
/**
|
2018-11-06 03:57:36 +01:00
|
|
|
* @var SourceAnalyzer
|
2017-01-02 21:31:18 +01:00
|
|
|
*/
|
2018-11-06 03:57:36 +01:00
|
|
|
protected $source;
|
2017-01-02 21:31:18 +01:00
|
|
|
|
2019-06-30 03:13:02 +02:00
|
|
|
public function __destruct()
|
|
|
|
{
|
2021-09-25 18:11:54 +02:00
|
|
|
unset($this->source);
|
2019-06-30 03:06:21 +02:00
|
|
|
}
|
|
|
|
|
2020-09-04 22:26:33 +02:00
|
|
|
public function getAliases(): Aliases
|
2016-11-21 03:49:06 +01:00
|
|
|
{
|
2017-07-25 22:11:02 +02:00
|
|
|
return $this->source->getAliases();
|
2016-11-21 03:49:06 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
2020-12-29 12:42:12 +01:00
|
|
|
* @return array<lowercase-string, string>
|
2016-11-21 03:49:06 +01:00
|
|
|
*/
|
2020-09-04 22:26:33 +02:00
|
|
|
public function getAliasedClassesFlipped(): array
|
2016-11-21 03:49:06 +01:00
|
|
|
{
|
2017-01-07 20:35:07 +01:00
|
|
|
return $this->source->getAliasedClassesFlipped();
|
2016-11-21 03:49:06 +01:00
|
|
|
}
|
|
|
|
|
2019-06-06 04:13:33 +02:00
|
|
|
/**
|
|
|
|
* @return array<string, string>
|
|
|
|
*/
|
2020-09-04 22:26:33 +02:00
|
|
|
public function getAliasedClassesFlippedReplaceable(): array
|
2019-06-06 04:13:33 +02:00
|
|
|
{
|
|
|
|
return $this->source->getAliasedClassesFlippedReplaceable();
|
|
|
|
}
|
|
|
|
|
2020-09-04 22:26:33 +02:00
|
|
|
public function getFQCLN(): ?string
|
2016-11-21 03:49:06 +01:00
|
|
|
{
|
2017-01-07 20:35:07 +01:00
|
|
|
return $this->source->getFQCLN();
|
2016-11-21 03:49:06 +01:00
|
|
|
}
|
|
|
|
|
2020-09-04 22:26:33 +02:00
|
|
|
public function getClassName(): ?string
|
2016-11-21 03:49:06 +01:00
|
|
|
{
|
2017-01-07 20:35:07 +01:00
|
|
|
return $this->source->getClassName();
|
2016-11-21 03:49:06 +01:00
|
|
|
}
|
|
|
|
|
2020-09-04 22:26:33 +02:00
|
|
|
public function getParentFQCLN(): ?string
|
2016-11-21 03:49:06 +01:00
|
|
|
{
|
2017-01-07 20:35:07 +01:00
|
|
|
return $this->source->getParentFQCLN();
|
2016-11-21 03:49:06 +01:00
|
|
|
}
|
|
|
|
|
2020-09-04 22:26:33 +02:00
|
|
|
public function getFileName(): string
|
2016-11-21 03:49:06 +01:00
|
|
|
{
|
2017-01-07 20:35:07 +01:00
|
|
|
return $this->source->getFileName();
|
2016-11-21 03:49:06 +01:00
|
|
|
}
|
|
|
|
|
2020-09-04 22:26:33 +02:00
|
|
|
public function getFilePath(): string
|
2016-12-04 01:11:30 +01:00
|
|
|
{
|
2017-01-07 20:35:07 +01:00
|
|
|
return $this->source->getFilePath();
|
2016-12-04 01:11:30 +01:00
|
|
|
}
|
|
|
|
|
2020-09-12 17:24:05 +02:00
|
|
|
public function getRootFileName(): string
|
2016-11-21 03:49:06 +01:00
|
|
|
{
|
2018-05-30 22:19:18 +02:00
|
|
|
return $this->source->getRootFileName();
|
2016-11-21 03:49:06 +01:00
|
|
|
}
|
|
|
|
|
2020-09-12 17:24:05 +02:00
|
|
|
public function getRootFilePath(): string
|
2016-12-04 01:11:30 +01:00
|
|
|
{
|
2018-05-30 22:19:18 +02:00
|
|
|
return $this->source->getRootFilePath();
|
2016-11-21 03:49:06 +01:00
|
|
|
}
|
|
|
|
|
2020-10-12 21:02:52 +02:00
|
|
|
public function setRootFilePath(string $file_path, string $file_name): void
|
2018-05-23 05:38:27 +02:00
|
|
|
{
|
2018-05-30 22:19:18 +02:00
|
|
|
$this->source->setRootFilePath($file_path, $file_name);
|
2018-05-23 05:38:27 +02:00
|
|
|
}
|
|
|
|
|
2020-09-07 01:36:47 +02:00
|
|
|
public function hasParentFilePath(string $file_path): bool
|
2018-05-23 05:38:27 +02:00
|
|
|
{
|
2018-05-30 22:19:18 +02:00
|
|
|
return $this->source->hasParentFilePath($file_path);
|
2018-05-23 05:38:27 +02:00
|
|
|
}
|
|
|
|
|
2020-09-07 01:36:47 +02:00
|
|
|
public function hasAlreadyRequiredFilePath(string $file_path): bool
|
2018-05-23 05:38:27 +02:00
|
|
|
{
|
2018-05-30 22:19:18 +02:00
|
|
|
return $this->source->hasAlreadyRequiredFilePath($file_path);
|
2018-05-23 05:38:27 +02:00
|
|
|
}
|
|
|
|
|
2020-09-04 22:26:33 +02:00
|
|
|
public function getRequireNesting(): int
|
2018-05-23 05:38:27 +02:00
|
|
|
{
|
2018-05-30 22:19:18 +02:00
|
|
|
return $this->source->getRequireNesting();
|
2018-05-23 05:38:27 +02:00
|
|
|
}
|
|
|
|
|
2016-11-21 03:49:06 +01:00
|
|
|
/**
|
2020-08-23 16:28:26 +02:00
|
|
|
* @psalm-mutation-free
|
2016-11-21 03:49:06 +01:00
|
|
|
*/
|
2020-09-13 22:39:06 +02:00
|
|
|
public function getSource(): StatementsSource
|
2016-11-21 03:49:06 +01:00
|
|
|
{
|
2018-11-06 03:57:36 +01:00
|
|
|
return $this->source;
|
2016-11-21 03:49:06 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Get a list of suppressed issues
|
|
|
|
*
|
|
|
|
* @return array<string>
|
|
|
|
*/
|
2020-09-04 22:26:33 +02:00
|
|
|
public function getSuppressedIssues(): array
|
2016-11-21 03:49:06 +01:00
|
|
|
{
|
2017-01-07 20:35:07 +01:00
|
|
|
return $this->source->getSuppressedIssues();
|
2016-11-21 03:49:06 +01:00
|
|
|
}
|
2016-12-17 06:48:31 +01:00
|
|
|
|
2017-10-27 00:19:19 +02:00
|
|
|
/**
|
|
|
|
* @param array<int, string> $new_issues
|
|
|
|
*/
|
2020-10-12 21:02:52 +02:00
|
|
|
public function addSuppressedIssues(array $new_issues): void
|
2017-10-27 00:19:19 +02:00
|
|
|
{
|
2017-12-14 18:50:02 +01:00
|
|
|
$this->source->addSuppressedIssues($new_issues);
|
2017-10-27 00:19:19 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @param array<int, string> $new_issues
|
|
|
|
*/
|
2020-10-12 21:02:52 +02:00
|
|
|
public function removeSuppressedIssues(array $new_issues): void
|
2017-10-27 00:19:19 +02:00
|
|
|
{
|
2017-12-14 18:50:02 +01:00
|
|
|
$this->source->removeSuppressedIssues($new_issues);
|
2017-10-27 00:19:19 +02:00
|
|
|
}
|
|
|
|
|
2020-09-04 22:26:33 +02:00
|
|
|
public function getNamespace(): ?string
|
2016-12-17 06:48:31 +01:00
|
|
|
{
|
2017-01-07 20:35:07 +01:00
|
|
|
return $this->source->getNamespace();
|
|
|
|
}
|
|
|
|
|
2020-09-04 22:26:33 +02:00
|
|
|
public function isStatic(): bool
|
2017-01-07 20:35:07 +01:00
|
|
|
{
|
|
|
|
return $this->source->isStatic();
|
2016-12-17 06:48:31 +01:00
|
|
|
}
|
2018-11-06 03:57:36 +01:00
|
|
|
|
2020-08-28 18:42:55 +02:00
|
|
|
/**
|
|
|
|
* @psalm-mutation-free
|
|
|
|
*/
|
2021-12-05 18:51:26 +01:00
|
|
|
public function getCodebase(): Codebase
|
2018-11-06 03:57:36 +01:00
|
|
|
{
|
|
|
|
return $this->source->getCodebase();
|
|
|
|
}
|
|
|
|
|
2020-08-28 18:42:55 +02:00
|
|
|
/**
|
|
|
|
* @psalm-mutation-free
|
|
|
|
*/
|
2021-12-05 18:51:26 +01:00
|
|
|
public function getProjectAnalyzer(): ProjectAnalyzer
|
2018-11-06 03:57:36 +01:00
|
|
|
{
|
|
|
|
return $this->source->getProjectAnalyzer();
|
|
|
|
}
|
|
|
|
|
2020-08-28 18:42:55 +02:00
|
|
|
/**
|
|
|
|
* @psalm-mutation-free
|
|
|
|
*/
|
2021-12-05 18:51:26 +01:00
|
|
|
public function getFileAnalyzer(): FileAnalyzer
|
2018-11-06 03:57:36 +01:00
|
|
|
{
|
|
|
|
return $this->source->getFileAnalyzer();
|
|
|
|
}
|
2018-12-18 05:29:27 +01:00
|
|
|
|
|
|
|
/**
|
2021-12-13 16:28:14 +01:00
|
|
|
* @return array<string, array<string, Union>>|null
|
2018-12-18 05:29:27 +01:00
|
|
|
*/
|
2020-09-04 22:26:33 +02:00
|
|
|
public function getTemplateTypeMap(): ?array
|
2018-12-18 05:29:27 +01:00
|
|
|
{
|
|
|
|
return $this->source->getTemplateTypeMap();
|
|
|
|
}
|
2019-11-25 17:44:54 +01:00
|
|
|
|
2021-12-05 18:51:26 +01:00
|
|
|
public function getNodeTypeProvider(): NodeTypeProvider
|
2019-11-25 17:44:54 +01:00
|
|
|
{
|
|
|
|
return $this->source->getNodeTypeProvider();
|
|
|
|
}
|
2016-11-21 03:49:06 +01:00
|
|
|
}
|