Phan\Analysis\BinaryOperatorFlagVisitor::visitBinaryOpCommon PHP Method

visitBinaryOpCommon() private method

private visitBinaryOpCommon ( 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
    private function visitBinaryOpCommon(Node $node)
    {
        $left = UnionType::fromNode($this->context, $this->code_base, $node->children['left']);
        $right = UnionType::fromNode($this->context, $this->code_base, $node->children['right']);
        if (!$left->genericArrayElementTypes()->isEmpty() && $left->nonGenericArrayTypes()->isEmpty() && !$right->canCastToUnionType(ArrayType::instance()->asUnionType())) {
            Issue::maybeEmit($this->code_base, $this->context, Issue::TypeComparisonFromArray, $node->lineno ?? 0, (string) $right);
        } elseif (!$right->genericArrayElementTypes()->isEmpty() && $right->nonGenericArrayTypes()->isEmpty() && !$left->canCastToUnionType(ArrayType::instance()->asUnionType())) {
            // and the same for the left side
            Issue::maybeEmit($this->code_base, $this->context, Issue::TypeComparisonToArray, $node->lineno ?? 0, (string) $left);
        }
        return BoolType::instance()->asUnionType();
    }