示例#1
0
 /**
  * @param Node $node
  * A node to parse
  *
  * @return Context
  * A new or an unchanged context resulting from
  * parsing the node
  */
 public function visitCatch(Node $node) : Context
 {
     try {
         $union_type = UnionTypeVisitor::unionTypeFromClassNode($this->code_base, $this->context, $node->children['class']);
         $class_list = AST::classListFromNodeInContext($this->code_base, $this->context, $node->children['class']);
     } catch (CodeBaseException $exception) {
         Log::err(Log::EUNDEF, "catching undeclared class {$exception->getFQSEN()}", $this->context->getFile(), $node->lineno);
     }
     $variable_name = AST::variableName($node->children['var']);
     if (!empty($variable_name)) {
         $variable = Variable::fromNodeInContext($node->children['var'], $this->context, $this->code_base, false);
         if (!$union_type->isEmpty()) {
             $variable->setUnionType($union_type);
         }
         $this->context->addScopeVariable($variable);
     }
     return $this->context;
 }
示例#2
0
 /**
  * @param Node $node
  * A node to parse
  *
  * @return Context
  * A new or an unchanged context resulting from
  * parsing the node
  */
 public function visitInstanceof(Node $node) : Context
 {
     try {
         $class_list = AST::classListFromNodeInContext($this->code_base, $this->context, $node->children['class']);
     } catch (CodeBaseException $exception) {
         Log::err(Log::EUNDEF, "instanceof check on undeclared class {$exception->getFQSEN()}", $this->context->getFile(), $node->lineno);
     }
     return $this->context;
 }