Search in sources :

Example 41 with Node

use of org.eclipse.n4js.flowgraphs.model.Node in project n4js by eclipse.

the class VariableDeclarationFactory method buildComplexNode.

static ComplexNode buildComplexNode(ReentrantASTIterator astpp, VariableDeclaration vd) {
    ComplexNode cNode = new ComplexNode(astpp.container(), vd);
    HelperNode entryNode = new HelperNode(NodeNames.ENTRY, astpp.pos(), vd);
    Node expressionNode = null;
    if (vd.getExpression() != null) {
        expressionNode = DelegatingNodeFactory.create(astpp, NodeNames.EXPRESSION, vd, vd.getExpression());
    }
    Node exitNode = new RepresentingNode(NodeNames.EXIT, astpp.pos(), vd);
    cNode.addNode(entryNode);
    cNode.addNode(expressionNode);
    cNode.addNode(exitNode);
    List<Node> nodes = new LinkedList<>();
    nodes.add(entryNode);
    nodes.add(expressionNode);
    nodes.add(exitNode);
    cNode.connectInternalSucc(nodes);
    if (vd.eContainer() instanceof BindingElement) {
        // In this case, the expression is the default value
        // TODO: improve this: find out if this is true or false
        cNode.connectInternalSucc(entryNode, exitNode);
    }
    cNode.setEntryNode(entryNode);
    cNode.setExitNode(exitNode);
    return cNode;
}
Also used : HelperNode(org.eclipse.n4js.flowgraphs.model.HelperNode) BindingElement(org.eclipse.n4js.n4JS.BindingElement) ComplexNode(org.eclipse.n4js.flowgraphs.model.ComplexNode) ComplexNode(org.eclipse.n4js.flowgraphs.model.ComplexNode) HelperNode(org.eclipse.n4js.flowgraphs.model.HelperNode) RepresentingNode(org.eclipse.n4js.flowgraphs.model.RepresentingNode) Node(org.eclipse.n4js.flowgraphs.model.Node) RepresentingNode(org.eclipse.n4js.flowgraphs.model.RepresentingNode) LinkedList(java.util.LinkedList)

Aggregations

Node (org.eclipse.n4js.flowgraphs.model.Node)41 ComplexNode (org.eclipse.n4js.flowgraphs.model.ComplexNode)34 HelperNode (org.eclipse.n4js.flowgraphs.model.HelperNode)17 RepresentingNode (org.eclipse.n4js.flowgraphs.model.RepresentingNode)17 LinkedList (java.util.LinkedList)16 CatchToken (org.eclipse.n4js.flowgraphs.model.CatchToken)11 ControlFlowEdge (org.eclipse.n4js.flowgraphs.model.ControlFlowEdge)8 ControlFlowElement (org.eclipse.n4js.n4JS.ControlFlowElement)8 LabelledStatement (org.eclipse.n4js.n4JS.LabelledStatement)6 DelegatingNode (org.eclipse.n4js.flowgraphs.model.DelegatingNode)5 ControlFlowType (org.eclipse.n4js.flowgraphs.ControlFlowType)4 HashSet (java.util.HashSet)3 VariableDeclarationOrBinding (org.eclipse.n4js.n4JS.VariableDeclarationOrBinding)3 AbstractCaseClause (org.eclipse.n4js.n4JS.AbstractCaseClause)2 CaseClause (org.eclipse.n4js.n4JS.CaseClause)2 FinallyBlock (org.eclipse.n4js.n4JS.FinallyBlock)2 Statement (org.eclipse.n4js.n4JS.Statement)2 LinkedHashSet (java.util.LinkedHashSet)1 List (java.util.List)1 DummyBackwardVisitor (org.eclipse.n4js.flowgraphs.analysers.DummyBackwardVisitor)1