Ejemplo n.º 1
0
 public function testFullyQualifiedGlobalConstantName()
 {
     $this->assertFQSENEqual(FullyQualifiedGlobalConstantName::make('\\Name\\Space', 'c'), '\\Name\\Space\\c');
     $this->assertFQSENEqual(FullyQualifiedGlobalConstantName::make('', 'c'), '\\c');
     $this->assertFQSENEqual(FullyQualifiedGlobalConstantName::make('', 'c'), '\\c');
     $this->assertFQSENEqual(FullyQualifiedGlobalConstantName::fromFullyQualifiedString('\\c'), '\\c');
     $this->assertFQSENEqual(FullyQualifiedGlobalConstantName::fromStringInContext('c', $this->context), '\\c');
 }
Ejemplo n.º 2
0
 /**
  * @param Node $node
  * The node where the constant was found
  *
  * @param string $name
  * The name of the constant
  *
  * @param Node|mixed $value
  * Either a node or a constant to be used as the value of
  * the constant.
  *
  * @param int $flags
  * Any flags on the definition of the constant
  *
  * @return void
  */
 private function addConstant(Node $node, string $name, $value, int $flags = 0)
 {
     // Give it a fully-qualified name
     $fqsen = FullyQualifiedGlobalConstantName::fromStringInContext($name, $this->context);
     // Create the constant
     $constant = new GlobalConstant($this->context->withLineNumberStart($node->lineno ?? 0), $name, new UnionType(), $flags, $fqsen);
     $constant->setFutureUnionType(new FutureUnionType($this->code_base, $this->context, $value));
     $this->code_base->addGlobalConstant($constant);
 }
Ejemplo n.º 3
0
 /**
  * @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);
 }