2016-11-21 03:49:06 +01:00
|
|
|
<?php
|
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;
|
2016-11-21 03:49:06 +01:00
|
|
|
use Psalm\StatementsSource;
|
2018-12-18 05:29:27 +01:00
|
|
|
use Psalm\Type;
|
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()
|
|
|
|
{
|
2019-06-30 03:06:21 +02:00
|
|
|
$this->source = null;
|
|
|
|
}
|
|
|
|
|
2016-11-21 05:45:10 +01:00
|
|
|
/**
|
2017-07-25 22:11:02 +02:00
|
|
|
* @return Aliases
|
2016-11-21 05:45:10 +01:00
|
|
|
*/
|
2017-07-25 22:11:02 +02:00
|
|
|
public function getAliases()
|
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
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
2016-12-24 19:23:22 +01:00
|
|
|
* @return array<string, string>
|
2016-11-21 03:49:06 +01:00
|
|
|
*/
|
|
|
|
public function getAliasedClassesFlipped()
|
|
|
|
{
|
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>
|
|
|
|
*/
|
|
|
|
public function getAliasedClassesFlippedReplaceable()
|
|
|
|
{
|
|
|
|
return $this->source->getAliasedClassesFlippedReplaceable();
|
|
|
|
}
|
|
|
|
|
2016-11-21 03:49:06 +01:00
|
|
|
/**
|
2017-01-07 20:35:07 +01:00
|
|
|
* @return string|null
|
2016-11-21 03:49:06 +01:00
|
|
|
*/
|
|
|
|
public function getFQCLN()
|
|
|
|
{
|
2017-01-07 20:35:07 +01:00
|
|
|
return $this->source->getFQCLN();
|
2016-11-21 03:49:06 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
2017-01-07 20:35:07 +01:00
|
|
|
* @return string|null
|
2016-11-21 03:49:06 +01:00
|
|
|
*/
|
|
|
|
public function getClassName()
|
|
|
|
{
|
2017-01-07 20:35:07 +01:00
|
|
|
return $this->source->getClassName();
|
2016-11-21 03:49:06 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @return string|null
|
|
|
|
*/
|
2017-01-07 20:35:07 +01:00
|
|
|
public function getParentFQCLN()
|
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
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @return string
|
|
|
|
*/
|
|
|
|
public function getFileName()
|
|
|
|
{
|
2017-01-07 20:35:07 +01:00
|
|
|
return $this->source->getFileName();
|
2016-11-21 03:49:06 +01:00
|
|
|
}
|
|
|
|
|
2016-12-04 01:11:30 +01:00
|
|
|
/**
|
|
|
|
* @return string
|
|
|
|
*/
|
|
|
|
public function getFilePath()
|
|
|
|
{
|
2017-01-07 20:35:07 +01:00
|
|
|
return $this->source->getFilePath();
|
2016-12-04 01:11:30 +01:00
|
|
|
}
|
|
|
|
|
2016-11-21 03:49:06 +01:00
|
|
|
/**
|
|
|
|
* @return string
|
|
|
|
*/
|
2018-05-30 22:19:18 +02:00
|
|
|
public function getRootFileName()
|
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
|
|
|
}
|
|
|
|
|
2016-12-04 01:11:30 +01:00
|
|
|
/**
|
|
|
|
* @return string
|
|
|
|
*/
|
2018-05-30 22:19:18 +02:00
|
|
|
public function getRootFilePath()
|
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
|
|
|
}
|
|
|
|
|
2018-05-23 05:38:27 +02:00
|
|
|
/**
|
|
|
|
* @param string $file_path
|
|
|
|
* @param string $file_name
|
|
|
|
*
|
|
|
|
* @return void
|
|
|
|
*/
|
2018-05-30 22:19:18 +02:00
|
|
|
public function setRootFilePath($file_path, $file_name)
|
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
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @param string $file_path
|
|
|
|
*
|
|
|
|
* @return bool
|
|
|
|
*/
|
2018-05-30 22:19:18 +02:00
|
|
|
public function hasParentFilePath($file_path)
|
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
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @param string $file_path
|
|
|
|
*
|
|
|
|
* @return bool
|
|
|
|
*/
|
2018-05-30 22:19:18 +02:00
|
|
|
public function hasAlreadyRequiredFilePath($file_path)
|
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
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @return int
|
|
|
|
*/
|
2018-05-30 22:19:18 +02:00
|
|
|
public function getRequireNesting()
|
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
|
2017-01-02 21:31:18 +01:00
|
|
|
* @return StatementsSource
|
2016-11-21 03:49:06 +01:00
|
|
|
*/
|
|
|
|
public function getSource()
|
|
|
|
{
|
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>
|
|
|
|
*/
|
|
|
|
public function getSuppressedIssues()
|
|
|
|
{
|
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
|
|
|
|
*
|
|
|
|
* @return void
|
|
|
|
*/
|
|
|
|
public function addSuppressedIssues(array $new_issues)
|
|
|
|
{
|
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
|
|
|
|
*
|
|
|
|
* @return void
|
|
|
|
*/
|
|
|
|
public function removeSuppressedIssues(array $new_issues)
|
|
|
|
{
|
2017-12-14 18:50:02 +01:00
|
|
|
$this->source->removeSuppressedIssues($new_issues);
|
2017-10-27 00:19:19 +02:00
|
|
|
}
|
|
|
|
|
2017-01-06 07:07:11 +01:00
|
|
|
/**
|
2018-01-28 23:07:09 +01:00
|
|
|
* @return null|string
|
2017-01-06 07:07:11 +01:00
|
|
|
*/
|
2016-12-17 06:48:31 +01:00
|
|
|
public function getNamespace()
|
|
|
|
{
|
2017-01-07 20:35:07 +01:00
|
|
|
return $this->source->getNamespace();
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @return bool
|
|
|
|
*/
|
|
|
|
public function isStatic()
|
|
|
|
{
|
|
|
|
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
|
|
|
|
*/
|
2018-11-06 03:57:36 +01:00
|
|
|
public function getCodebase() : Codebase
|
|
|
|
{
|
|
|
|
return $this->source->getCodebase();
|
|
|
|
}
|
|
|
|
|
2020-08-28 18:42:55 +02:00
|
|
|
/**
|
|
|
|
* @psalm-mutation-free
|
|
|
|
*/
|
2018-11-06 03:57:36 +01:00
|
|
|
public function getProjectAnalyzer() : ProjectAnalyzer
|
|
|
|
{
|
|
|
|
return $this->source->getProjectAnalyzer();
|
|
|
|
}
|
|
|
|
|
2020-08-28 18:42:55 +02:00
|
|
|
/**
|
|
|
|
* @psalm-mutation-free
|
|
|
|
*/
|
2018-11-06 03:57:36 +01:00
|
|
|
public function getFileAnalyzer() : FileAnalyzer
|
|
|
|
{
|
|
|
|
return $this->source->getFileAnalyzer();
|
|
|
|
}
|
2018-12-18 05:29:27 +01:00
|
|
|
|
|
|
|
/**
|
2019-03-22 20:59:10 +01:00
|
|
|
* @return array<string, array<string, array{Type\Union}>>|null
|
2018-12-18 05:29:27 +01:00
|
|
|
*/
|
|
|
|
public function getTemplateTypeMap()
|
|
|
|
{
|
|
|
|
return $this->source->getTemplateTypeMap();
|
|
|
|
}
|
2019-11-25 17:44:54 +01:00
|
|
|
|
|
|
|
public function getNodeTypeProvider() : \Psalm\NodeTypeProvider
|
|
|
|
{
|
|
|
|
return $this->source->getNodeTypeProvider();
|
|
|
|
}
|
2016-11-21 03:49:06 +01:00
|
|
|
}
|