Package org.cx4a.rsense.typing.vertex

Examples of org.cx4a.rsense.typing.vertex.Vertex


   
    public Object visitBreakNode(BreakNode node) {
        Frame frame = context.getCurrentFrame();
        LoopTag loopTag = RuntimeHelper.getFrameLoopTag(frame);
        if (loopTag != null) {
            Vertex vertex = createVertex(node.getValueNode());
            if (loopTag.getYieldVertex() != null)
                addEdgeAndPropagate(vertex, loopTag.getYieldVertex());
            else
                Logger.debug("no yield vertex");
            return vertex;
View Full Code Here


    public Object visitClassVarNode(ClassVarNode node) {
        return RuntimeHelper.classVariable(this, node);
    }
   
    public Object visitCallNode(CallNode node) {
        Vertex receiverVertex = createVertex(node.getReceiverNode());
        Vertex[] argVertices = RuntimeHelper.setupCallArgs(this, node.getArgsNode());
        Block block = RuntimeHelper.setupCallBlock(this, node.getIterNode());
        CallVertex vertex = new CallVertex(node, receiverVertex, argVertices, block);
        return RuntimeHelper.call(this, vertex);
    }
View Full Code Here

        return RuntimeHelper.call(this, vertex);
    }
   
    public Object visitCaseNode(CaseNode node) {
        // FIXME eval ===
        Vertex vertex = createEmptyVertex(node);
        if (node.getCaseNode() != null) {
            createVertex(node.getCaseNode());
        }
        ListNode cases = node.getCases();
        if (cases != null) {
            for (int i = 0; i < cases.size(); i++) {
                WhenNode when = (WhenNode) cases.get(i);
                if (when.getBodyNode() != null) {
                    Vertex v = createVertex(when.getBodyNode());
                    addEdgeAndUpdate(v, vertex);
                }
            }
        }
        if (node.getElseNode() != null) {
            Vertex v = createVertex(node.getElseNode());
            addEdgeAndUpdate(v, vertex);
        }
        return vertex;
    }
View Full Code Here

            return Vertex.EMPTY;
        }

        RubyClass superClass = null;
        if (node.getSuperNode() != null) {
            Vertex v = createVertex(node.getSuperNode());
            if (v != null) {
                IRubyObject superObj = v.singleType();
                if (superObj instanceof RubyClass) {
                    superClass = (RubyClass) superObj;
                }
            }
            if (superClass == null) {
View Full Code Here

        return Vertex.EMPTY;
    }
   
    public Object visitDefsNode(DefsNode node) {
        Vertex receiverVertex = createVertex(node.getReceiverNode());
        if (receiverVertex.isEmpty()) {
            Logger.error(SourceLocation.of(node), "null receiver for defs: %s", node.getName());
            return Vertex.EMPTY;
        }

        RubyModule cbase = context.getCurrentScope().getModule();
        String name = node.getName();
        for (IRubyObject receiver : receiverVertex.getTypeSet()) {
            if (receiver instanceof RubyModule) {
                RubyClass rubyClass = receiver.getSingletonClass();
                Node bodyNode = node.getBodyNode();
                Node argsNode = node.getArgsNode();
View Full Code Here

    }
   
    public Object visitDotNode(DotNode node) {
        // FIXME propagation
        IRubyObject range = newInstanceOf(runtime.getRange());
        Vertex beginVertex = createVertex(node.getBeginNode());
        Vertex endVertex = createVertex(node.getEndNode());
        TypeVarMap typeVarMap = RuntimeHelper.getTypeVarMap(range);
        if (typeVarMap != null && beginVertex != null && endVertex != null) {
            Vertex t = createFreeVertex();
            t.update(beginVertex);
            t.update(endVertex);
            typeVarMap.put(TypeVariable.valueOf("t"), t);
        }
        return createSingleTypeVertex(node, range);
    }
View Full Code Here

    public Object visitFloatNode(FloatNode node) {
        return createSingleTypeVertex(node, newInstanceOf(runtime.getFloat()));
    }
   
    public Object visitForNode(ForNode node) {
        Vertex vertex = createEmptyVertex(node);
        Vertex receiverVertex = createVertex(node.getIterNode());
        Block block = new Proc(runtime, node.getVarNode(), node.getBodyNode(), context.getCurrentFrame(), context.getCurrentScope());
        CallVertex callVertex = new CallVertex(node, "each", receiverVertex, null, block);
        RuntimeHelper.call(this, callVertex);
        addEdgeAndUpdate(vertex, callVertex);
        return vertex;
View Full Code Here

    public Object visitInstVarNode(InstVarNode node) {
        return RuntimeHelper.instanceVariable(this, node);
    }
   
    public Object visitIfNode(IfNode node) {
        Vertex vertex = createEmptyVertex(node);
        createVertex(node.getCondition());
        Vertex thenBodyVertex = null;
        if (node.getThenBody() != null) {
            thenBodyVertex = createVertex(node.getThenBody());
            addEdgeAndUpdate(thenBodyVertex, vertex);
        }
        Vertex elseBodyVertex = null;
        if (node.getElseBody() != null) {
            elseBodyVertex = createVertex(node.getElseBody());
            addEdgeAndUpdate(elseBodyVertex, vertex);

        }
View Full Code Here

    public Object visitNextNode(NextNode node) {
        Frame frame = context.getCurrentFrame();
        LoopTag loopTag = RuntimeHelper.getFrameLoopTag(frame);
        if (loopTag != null && loopTag.getYieldVertex() != null) {
            Vertex vertex = createVertex(node.getValueNode());
            if (loopTag.getYieldVertex() != null)
                addEdgeAndPropagate(vertex, loopTag.getYieldVertex());
            else
                Logger.debug("no yield vertex");
            return vertex;
View Full Code Here

        return createSingleTypeVertex(node, newInstanceOf(runtime.getString()));
    }
   
    public Object visitOpElementAsgnNode(OpElementAsgnNode node) {
        String operator = node.getOperatorName();
        Vertex receiverVertex = createVertex(node.getReceiverNode());
        Vertex[] argVertices = null;
        if (node.getArgsNode() != null) {
            List<Node> argNodes = node.getArgsNode().childNodes();
            argVertices = new Vertex[argNodes.size()];
            for (int i = 0; i < argVertices.length; i++) {
                argVertices[i] = createVertex(argNodes.get(i));
            }
        }
        Vertex src = createVertex(node.getValueNode());
        Vertex value;

        if (operator.equals("||") || operator.equals("&&")) {
            // do nothing
            value = src;
        } else {
View Full Code Here

TOP

Related Classes of org.cx4a.rsense.typing.vertex.Vertex

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.