2016-11-21 03:49:06 +01:00
|
|
|
<?php
|
|
|
|
namespace Psalm\Checker;
|
|
|
|
|
|
|
|
use Psalm\StatementsSource;
|
|
|
|
|
|
|
|
abstract class SourceChecker implements StatementsSource
|
|
|
|
{
|
2017-01-02 21:31:18 +01:00
|
|
|
/**
|
|
|
|
* @var StatementsSource|null
|
|
|
|
*/
|
|
|
|
protected $source = null;
|
|
|
|
|
2017-03-20 04:30:20 +01:00
|
|
|
/**
|
|
|
|
* @var FileChecker|null
|
|
|
|
*/
|
|
|
|
protected $file_checker;
|
|
|
|
|
2016-11-21 05:45:10 +01:00
|
|
|
/**
|
2017-01-07 20:35:07 +01:00
|
|
|
* @return array<string, string>
|
2016-11-21 05:45:10 +01:00
|
|
|
*/
|
2017-01-07 20:35:07 +01:00
|
|
|
public function getAliasedClasses()
|
2016-11-21 03:49:06 +01:00
|
|
|
{
|
2017-01-07 20:35:07 +01:00
|
|
|
if ($this->source === null) {
|
|
|
|
throw new \UnexpectedValueException('$source cannot be null');
|
2016-11-21 04:40:19 +01:00
|
|
|
}
|
|
|
|
|
2017-01-07 20:35:07 +01:00
|
|
|
return $this->source->getAliasedClasses();
|
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
|
|
|
if ($this->source === null) {
|
|
|
|
throw new \UnexpectedValueException('$source cannot be null');
|
|
|
|
}
|
|
|
|
|
|
|
|
return $this->source->getAliasedClassesFlipped();
|
2016-11-21 03:49:06 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Gets a list of all aliased constants
|
|
|
|
*
|
2017-01-07 20:35:07 +01:00
|
|
|
* @return array<string, string>
|
2016-11-21 03:49:06 +01:00
|
|
|
*/
|
|
|
|
public function getAliasedConstants()
|
|
|
|
{
|
2017-01-07 20:35:07 +01:00
|
|
|
if ($this->source === null) {
|
|
|
|
throw new \UnexpectedValueException('$source cannot be null');
|
|
|
|
}
|
|
|
|
|
|
|
|
return $this->source->getAliasedConstants();
|
2016-11-21 03:49:06 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Gets a list of all aliased functions
|
|
|
|
*
|
2017-01-07 20:35:07 +01:00
|
|
|
* @return array<string, string>
|
2016-11-21 03:49:06 +01:00
|
|
|
*/
|
|
|
|
public function getAliasedFunctions()
|
|
|
|
{
|
2017-01-07 20:35:07 +01:00
|
|
|
if ($this->source === null) {
|
|
|
|
throw new \UnexpectedValueException('$source cannot be null');
|
|
|
|
}
|
|
|
|
|
|
|
|
return $this->source->getAliasedFunctions();
|
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
|
|
|
if ($this->source === null) {
|
|
|
|
throw new \UnexpectedValueException('$source cannot be null');
|
|
|
|
}
|
|
|
|
|
|
|
|
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
|
|
|
if ($this->source === null) {
|
|
|
|
throw new \UnexpectedValueException('$source cannot be null');
|
|
|
|
}
|
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
|
|
|
}
|
|
|
|
|
2017-01-02 21:31:18 +01:00
|
|
|
/**
|
|
|
|
* @return FileChecker
|
2017-03-20 04:30:20 +01:00
|
|
|
* @psalm-suppress InvalidReturnType because it basically always returns a file checker
|
2017-01-02 21:31:18 +01:00
|
|
|
*/
|
|
|
|
public function getFileChecker()
|
|
|
|
{
|
2017-03-20 04:30:20 +01:00
|
|
|
return $this->file_checker;
|
2017-01-02 21:31:18 +01:00
|
|
|
}
|
|
|
|
|
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
|
|
|
if ($this->source === null) {
|
|
|
|
throw new \UnexpectedValueException('$source cannot be null');
|
|
|
|
}
|
|
|
|
|
|
|
|
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
|
|
|
if ($this->source === null) {
|
|
|
|
throw new \UnexpectedValueException('$source cannot be null');
|
|
|
|
}
|
|
|
|
|
|
|
|
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
|
|
|
if ($this->source === null) {
|
|
|
|
throw new \UnexpectedValueException('$source cannot be null');
|
|
|
|
}
|
|
|
|
|
|
|
|
return $this->source->getFilePath();
|
2016-12-04 01:11:30 +01:00
|
|
|
}
|
|
|
|
|
2016-11-21 03:49:06 +01:00
|
|
|
/**
|
|
|
|
* @param string|null $file_name
|
2016-12-04 01:11:30 +01:00
|
|
|
* @param string|null $file_path
|
2016-11-21 03:49:06 +01:00
|
|
|
* @return void
|
|
|
|
*/
|
2017-01-08 01:33:33 +01:00
|
|
|
public function setFileName($file_name, $file_path)
|
2016-11-21 03:49:06 +01:00
|
|
|
{
|
2017-01-07 20:35:07 +01:00
|
|
|
if ($this->source === null) {
|
|
|
|
throw new \UnexpectedValueException('$source cannot be null');
|
|
|
|
}
|
|
|
|
|
2017-01-08 01:33:33 +01:00
|
|
|
$this->source->setFileName($file_name, $file_path);
|
2016-11-21 03:49:06 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @return string
|
|
|
|
*/
|
|
|
|
public function getCheckedFileName()
|
|
|
|
{
|
2017-01-07 20:35:07 +01:00
|
|
|
if ($this->source === null) {
|
|
|
|
throw new \UnexpectedValueException('$source cannot be null');
|
|
|
|
}
|
|
|
|
|
|
|
|
return $this->source->getCheckedFileName();
|
2016-11-21 03:49:06 +01:00
|
|
|
}
|
|
|
|
|
2016-12-04 01:11:30 +01:00
|
|
|
/**
|
|
|
|
* @return string
|
|
|
|
*/
|
|
|
|
public function getCheckedFilePath()
|
|
|
|
{
|
2017-01-07 20:35:07 +01:00
|
|
|
if ($this->source === null) {
|
|
|
|
throw new \UnexpectedValueException('$source cannot be null');
|
|
|
|
}
|
2016-12-04 01:11:30 +01:00
|
|
|
|
2017-01-07 20:35:07 +01:00
|
|
|
return $this->source->getCheckedFilePath();
|
2016-11-21 03:49:06 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
2017-01-02 21:31:18 +01:00
|
|
|
* @return StatementsSource
|
2016-11-21 03:49:06 +01:00
|
|
|
*/
|
|
|
|
public function getSource()
|
|
|
|
{
|
2017-01-02 21:31:18 +01:00
|
|
|
return $this->source ?: $this;
|
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
|
|
|
if ($this->source === null) {
|
|
|
|
throw new \UnexpectedValueException('$source cannot be null');
|
|
|
|
}
|
|
|
|
|
|
|
|
return $this->source->getSuppressedIssues();
|
2016-11-21 03:49:06 +01:00
|
|
|
}
|
2016-12-17 06:48:31 +01:00
|
|
|
|
2017-01-06 07:07:11 +01:00
|
|
|
/**
|
|
|
|
* @return string
|
|
|
|
*/
|
2016-12-17 06:48:31 +01:00
|
|
|
public function getNamespace()
|
|
|
|
{
|
2017-01-07 20:35:07 +01:00
|
|
|
if ($this->source === null) {
|
|
|
|
throw new \UnexpectedValueException('$source cannot be null');
|
|
|
|
}
|
|
|
|
|
|
|
|
return $this->source->getNamespace();
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @return bool
|
|
|
|
*/
|
|
|
|
public function isStatic()
|
|
|
|
{
|
|
|
|
if ($this->source === null) {
|
|
|
|
throw new \UnexpectedValueException('$source cannot be null');
|
|
|
|
}
|
|
|
|
|
|
|
|
return $this->source->isStatic();
|
2016-12-17 06:48:31 +01:00
|
|
|
}
|
2016-11-21 03:49:06 +01:00
|
|
|
}
|