Package org.cx4a.rsense.typing.vertex

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


        Logger.warn("undef is not supported yet.");
        return Vertex.EMPTY;
    }
   
    public Object visitUntilNode(UntilNode node) {
        Vertex vertex = createEmptyVertex(node);
        createVertex(node.getConditionNode());
        RuntimeHelper.pushLoopFrame(context, vertex, null);
        createVertex(node.getBodyNode());
        RuntimeHelper.popLoopFrame(context);
        return vertex;
View Full Code Here


        unsupportedNode(node);
        return Vertex.EMPTY;
    }
   
    public Object visitWhileNode(WhileNode node) {
        Vertex vertex = createEmptyVertex(node);
        createVertex(node.getConditionNode());
        RuntimeHelper.pushLoopFrame(context, vertex, null);
        createVertex(node.getBodyNode());
        RuntimeHelper.popLoopFrame(context);
        return vertex;
View Full Code Here

        // FIXME eval `
        return createSingleTypeVertex(node, newInstanceOf(runtime.getString()));
    }
   
    public Object visitYieldNode(YieldNode node) {
        Vertex argsVertex = null;
        if (node.getArgsNode() != null) {
            argsVertex = createVertex(node.getArgsNode());
        }
        YieldVertex vertex = new YieldVertex(node, RuntimeHelper.getFrameTemplate(context.getCurrentFrame()), context.getFrameBlock(), argsVertex, node.getExpandArguments());
        return RuntimeHelper.yield(this, vertex);
View Full Code Here

        if (template != null) {
            // FIXME more efficient way
            TemplateAttribute attr = template.getAttribute();
            IRubyObject[] args = attr.getArgs();

            Vertex receiverVertex = createFreeSingleTypeVertex(context.getFrameSelf());
            Vertex[] argVertices = new Vertex[args.length];
            for (int i = 0; i < args.length; i++) {
                argVertices[i] = createFreeSingleTypeVertex(args[i]);
            }
           
View Full Code Here

    public Template(Method method, Frame frame, Scope scope, TemplateAttribute attr) {
        this.method = method;
        this.attr = attr;
        this.frame = frame;
        this.scope = scope;
        this.returnVertex = new Vertex();
    }
View Full Code Here

    private void reproduceSideEffect(Graph graph, IRubyObject from, IRubyObject to) {
        if (from instanceof MonomorphicObject && to instanceof MonomorphicObject) {
            MonomorphicObject a = (MonomorphicObject) from;
            MonomorphicObject b = (MonomorphicObject) to;
            for (Map.Entry<TypeVariable, Vertex> entry : a.getTypeVarMap().entrySet()) {
                Vertex src = entry.getValue();
                Vertex dest = b.getTypeVarMap().get(entry.getKey());
                if (dest != null) {
                    graph.propagateEdge(src, dest);
                }
            }
        }
View Full Code Here

            name = node.getName();
            module = graph.getRuntime().getContext().getFrameModule();
        } else if (constNode instanceof Colon2Node) {
            Node leftNode = ((Colon2Node) constNode).getLeftNode();

            Vertex v = graph.createVertex(leftNode);
            for (IRubyObject mod : v.getTypeSet()) {
                if (mod instanceof RubyModule) {
                    module = (RubyModule) mod;
                    break;
                }
            }
View Full Code Here

        int postCount = argsNode.getPostCount();
        if (preCount > 0) {
            int size = pre.size();
            for (int i = 0; i < size; i++) {
                Node next = pre.get(i);
                Vertex arg = i < args.length ? args[i] : Vertex.EMPTY;
                assign(graph, next, arg);
            }
        }
        if (postCount > 0) {
            int size = post.size();
            int argsLength = args.length;
            for (int i = 0; i < size; i++) {
                Node next = post.get(i);
                Vertex arg = argsLength - postCount + i < args.length
                    ? args[argsLength - postCount + i]
                    : Vertex.EMPTY;
                if (next instanceof AssignableNode) {
                    assign(graph, next, arg);
                } else {
View Full Code Here

    }

    public static void multipleAssign(Graph graph, MultipleAsgnNode node, IRubyObject object) {
        boolean isArray = object instanceof Array;
        Array array = null;
        Vertex element = Vertex.EMPTY;

        if (isArray) {
            array = (Array) object;
            if (array.isModified()) {
                return;
View Full Code Here

        List<Vertex> args = new ArrayList<Vertex>();
        if (argsNode != null) {
            switch (argsNode.getNodeType()) {
            case ARGSCATNODE:
            case SPLATNODE: {
                Vertex arrayVertex = graph.createVertex(argsNode);
                for (IRubyObject object : arrayVertex.getTypeSet()) {
                    if (object instanceof Array) {
                        Array array = (Array) object;
                        if (array.getElements() != null) {
                            for (Vertex element : array.getElements()) {
                                args.add(element);
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.