Package org.cx4a.rsense.ruby

Examples of org.cx4a.rsense.ruby.Block


        return args.isEmpty() ? null : args.toArray(new Vertex[0]);
    }

    public static Block setupCallBlock(Graph graph, Node iterNode) {
        Context context = graph.getRuntime().getContext();
        Block block = null;
        if (iterNode != null) {
            switch (iterNode.getNodeType()) {
            case ITERNODE: {
                IterNode inode = (IterNode) iterNode;
                DynamicScope scope = new DynamicScope(context.getCurrentScope().getModule(), context.getCurrentScope());
View Full Code Here


        if (vertex.isApplicable() && vertex.isChanged()) {
            vertex.markUnchanged();

            String name = vertex.getName();
            TypeSet receivers = vertex.getReceiverVertex().getTypeSet();
            Block block = vertex.getBlock();
            boolean noReturn = false;
            Vertex[] argVertices = vertex.getArgVertices();
            SpecialMethod.Result prevResult = null;
            TypeSet accumulator = new TypeSet();
View Full Code Here

        }

        Ruby runtime = graph.getRuntime();
        Context context = runtime.getContext();

        Block block = attr.getBlock();
        Scope scope = new LocalScope(method.getModule());
        context.pushFrame(context.getFrameModule(), name, receiver, block, Visibility.PUBLIC);
        context.pushScope(scope);

        Template template = new Template(method, context.getCurrentFrame(), scope, attr);
View Full Code Here

        }
        return true;
    }
   
    public boolean resolveMethodBlock(Template template, ClassType classType, MethodType.Block blockType, IRubyObject receiver) {
        Block block = template.getAttribute().getBlock();

        if (block == null && blockType == null) {
            return true;
        } else if ((block != null) ^ (blockType != null)) {
            return false;
View Full Code Here

    }
   
    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 Vertex.EMPTY;
    }
   
    public Object visitFCallNode(FCallNode node) {
        Vertex[] argVertices = RuntimeHelper.setupCallArgs(this, node.getArgsNode());
        Block block = RuntimeHelper.setupCallBlock(this, node.getIterNode());
        CallVertex vertex = new CallVertex(node, createFreeSingleTypeVertex(context.getFrameSelf()), argVertices, block);
        vertex.setPrivateVisibility(true);
        return RuntimeHelper.call(this, vertex);
    }
View Full Code Here

    }
   
    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

            for (int i = 0; i < argVertices.length; i++) {
                argVertices[i] = createVertex(argNodes.get(i));
            }
        }
       
        Block block = RuntimeHelper.setupCallBlock(this, node.getIterNode());
        CallVertex vertex = new CallVertex(node, context.getCurrentFrame().getName(), receiverVertex, argVertices, block);
        vertex.setPrivateVisibility(true);
        return RuntimeHelper.callSuper(this, vertex);
    }
View Full Code Here

            Vertex[] argVertices = new Vertex[args.length];
            for (int i = 0; i < args.length; i++) {
                argVertices[i] = createFreeSingleTypeVertex(args[i]);
            }
           
            Block block = RuntimeHelper.setupCallBlock(this, node.getIterNode());
            CallVertex vertex = new CallVertex(node, context.getCurrentFrame().getName(), receiverVertex, argVertices, block);
            vertex.setPrivateVisibility(true);
            return RuntimeHelper.callSuper(this, vertex);
        }
        return Vertex.EMPTY;
View Full Code Here

TOP

Related Classes of org.cx4a.rsense.ruby.Block

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.