/**
* @return ClassConstant
* Get the (non-class) constant associated with this node
* in this context
*
* @throws NodeException
* An exception is thrown if we can't understand the node
*
* @throws CodeBaseExtension
* An exception is thrown if we can't find the given
* class
*/
public function getConst() : ClassConstant
{
assert($this->node->kind === \ast\AST_CONST, "Node must be of type \\ast\\AST_CONST");
if ($this->node->children['name']->kind !== \ast\AST_NAME) {
throw new NodeException($this->node, "Can't determine constant name");
}
$constant_name = $this->node->children['name']->children['name'];
$fqsen = FullyQualifiedGlobalConstantName::fromStringInContext($constant_name, $this->context);
if (!$this->code_base->hasGlobalConstantWithFQSEN($fqsen)) {
throw new IssueException(Issue::fromType(Issue::UndeclaredConstant)($this->context->getFile(), $this->node->lineno ?? 0, [$constant_name]));
}
return $this->code_base->getGlobalConstantByFQSEN($fqsen);
}