Phan\Analysis\BinaryOperatorFlagVisitor::visit PHP Method

visit() public method

Default visitor for node kinds that do not have an overriding method
public visit ( ast\Node $node ) : UnionType
$node ast\Node A node to check types on
return Phan\Language\UnionType The resulting type(s) of the binary operation
    public function visit(Node $node) : UnionType
    {
        $left = UnionType::fromNode($this->context, $this->code_base, $node->children['left']);
        $right = UnionType::fromNode($this->context, $this->code_base, $node->children['right']);
        if ($left->isType(ArrayType::instance()) || $right->isType(ArrayType::instance())) {
            Issue::maybeEmit($this->code_base, $this->context, Issue::TypeArrayOperator, $node->lineno ?? 0, $left, $right);
            return new UnionType();
        } elseif ($left->hasType(IntType::instance()) && $right->hasType(IntType::instance())) {
            return IntType::instance()->asUnionType();
        } elseif ($left->hasType(FloatType::instance()) && $right->hasType(FloatType::instance())) {
            return FloatType::instance()->asUnionType();
        }
        return new UnionType([IntType::instance(), FloatType::instance()]);
    }