src/Phan/Language/Scope/TemplateScope.php
<?php
declare(strict_types=1);
namespace Phan\Language\Scope;
use InvalidArgumentException;
use Phan\Language\Scope;
use Phan\Language\Type\TemplateType;
/**
* A scope that adds (at)template annotations to the current outer scope.
* Used for parsing phpdoc comments.
*/
class TemplateScope extends Scope
{
/**
* @param TemplateType[] $template_type_list
*/
public function __construct(Scope $other, array $template_type_list)
{
parent::__construct($other, $other->fqsen, $other->flags);
if (\count($template_type_list) === 0) {
throw new InvalidArgumentException("TemplateScope should only be used to add templates");
}
foreach ($template_type_list as $template_type) {
$this->addTemplateType($template_type);
}
}
}