protected ControlFlowNode createSpecialNode(final Statement statement, final ControlFlowNodeType type) { return createSpecialNode(statement, type, true); }
protected ControlFlowNode createSpecialNode(final Statement statement, final ControlFlowNodeType type) { return createSpecialNode(statement, type, true); }
protected ControlFlowNode createSpecialNode(final Statement statement, final ControlFlowNodeType type) { return createSpecialNode(statement, type, true); }
@Override public ControlFlowNode visitForEachStatement(final ForEachStatement node, final ControlFlowNode data) { final ControlFlowNode end = createEndNode(node, false); final ControlFlowNode conditionNode = createSpecialNode(node, ControlFlowNodeType.LoopCondition); connect(data, conditionNode); breakTargets.push(end); continueTargets.push(conditionNode); final ControlFlowNode bodyEnd = handleEmbeddedStatement(node.getEmbeddedStatement(), conditionNode); connect(bodyEnd, conditionNode); breakTargets.pop(); continueTargets.pop(); connect(conditionNode, end); nodes.add(end); return end; }
@Override public ControlFlowNode visitForEachStatement(final ForEachStatement node, final ControlFlowNode data) { final ControlFlowNode end = createEndNode(node, false); final ControlFlowNode conditionNode = createSpecialNode(node, ControlFlowNodeType.LoopCondition); connect(data, conditionNode); breakTargets.push(end); continueTargets.push(conditionNode); final ControlFlowNode bodyEnd = handleEmbeddedStatement(node.getEmbeddedStatement(), conditionNode); connect(bodyEnd, conditionNode); breakTargets.pop(); continueTargets.pop(); connect(conditionNode, end); nodes.add(end); return end; }
@Override public ControlFlowNode visitForEachStatement(final ForEachStatement node, final ControlFlowNode data) { final ControlFlowNode end = createEndNode(node, false); final ControlFlowNode conditionNode = createSpecialNode(node, ControlFlowNodeType.LoopCondition); connect(data, conditionNode); breakTargets.push(end); continueTargets.push(conditionNode); final ControlFlowNode bodyEnd = handleEmbeddedStatement(node.getEmbeddedStatement(), conditionNode); connect(bodyEnd, conditionNode); breakTargets.pop(); continueTargets.pop(); connect(conditionNode, end); nodes.add(end); return end; }
@Override public ControlFlowNode visitWhileStatement(final WhileStatement node, final ControlFlowNode data) { final ControlFlowNode end = createEndNode(node, false); final ControlFlowNode conditionNode = createSpecialNode(node, ControlFlowNodeType.LoopCondition); breakTargets.push(end); continueTargets.push(conditionNode); connect(data, conditionNode); final Boolean condition = evaluateCondition(node.getCondition()); final ControlFlowNode bodyStart = createStartNode(node.getEmbeddedStatement()); if (!Boolean.FALSE.equals(condition)) { connect(conditionNode, bodyStart, ControlFlowEdgeType.ConditionTrue); } final ControlFlowNode bodyEnd = node.getEmbeddedStatement().acceptVisitor(this, bodyStart); connect(bodyEnd, conditionNode); if (!Boolean.TRUE.equals(condition)) { connect(conditionNode, end, ControlFlowEdgeType.ConditionFalse); } breakTargets.pop(); continueTargets.pop(); nodes.add(end); return end; }
@Override public ControlFlowNode visitDoWhileStatement(final DoWhileStatement node, final ControlFlowNode data) { final ControlFlowNode end = createEndNode(node, false); final ControlFlowNode conditionNode = createSpecialNode(node, ControlFlowNodeType.LoopCondition, false); breakTargets.push(end); continueTargets.push(conditionNode); final ControlFlowNode bodyStart = createStartNode(node.getEmbeddedStatement()); connect(data, bodyStart); final ControlFlowNode bodyEnd = node.getEmbeddedStatement().acceptVisitor(this, bodyStart); connect(bodyEnd, conditionNode); final Boolean condition = evaluateCondition(node.getCondition()); if (!Boolean.FALSE.equals(condition)) { connect(conditionNode, bodyStart, ControlFlowEdgeType.ConditionTrue); } if (!Boolean.TRUE.equals(condition)) { connect(conditionNode, end, ControlFlowEdgeType.ConditionFalse); } breakTargets.pop(); continueTargets.pop(); nodes.add(conditionNode); nodes.add(end); return end; }
@Override public ControlFlowNode visitDoWhileStatement(final DoWhileStatement node, final ControlFlowNode data) { final ControlFlowNode end = createEndNode(node, false); final ControlFlowNode conditionNode = createSpecialNode(node, ControlFlowNodeType.LoopCondition, false); breakTargets.push(end); continueTargets.push(conditionNode); final ControlFlowNode bodyStart = createStartNode(node.getEmbeddedStatement()); connect(data, bodyStart); final ControlFlowNode bodyEnd = node.getEmbeddedStatement().acceptVisitor(this, bodyStart); connect(bodyEnd, conditionNode); final Boolean condition = evaluateCondition(node.getCondition()); if (!Boolean.FALSE.equals(condition)) { connect(conditionNode, bodyStart, ControlFlowEdgeType.ConditionTrue); } if (!Boolean.TRUE.equals(condition)) { connect(conditionNode, end, ControlFlowEdgeType.ConditionFalse); } breakTargets.pop(); continueTargets.pop(); nodes.add(conditionNode); nodes.add(end); return end; }
@Override public ControlFlowNode visitDoWhileStatement(final DoWhileStatement node, final ControlFlowNode data) { final ControlFlowNode end = createEndNode(node, false); final ControlFlowNode conditionNode = createSpecialNode(node, ControlFlowNodeType.LoopCondition, false); breakTargets.push(end); continueTargets.push(conditionNode); final ControlFlowNode bodyStart = createStartNode(node.getEmbeddedStatement()); connect(data, bodyStart); final ControlFlowNode bodyEnd = node.getEmbeddedStatement().acceptVisitor(this, bodyStart); connect(bodyEnd, conditionNode); final Boolean condition = evaluateCondition(node.getCondition()); if (!Boolean.FALSE.equals(condition)) { connect(conditionNode, bodyStart, ControlFlowEdgeType.ConditionTrue); } if (!Boolean.TRUE.equals(condition)) { connect(conditionNode, end, ControlFlowEdgeType.ConditionFalse); } breakTargets.pop(); continueTargets.pop(); nodes.add(conditionNode); nodes.add(end); return end; }
@Override public ControlFlowNode visitWhileStatement(final WhileStatement node, final ControlFlowNode data) { final ControlFlowNode end = createEndNode(node, false); final ControlFlowNode conditionNode = createSpecialNode(node, ControlFlowNodeType.LoopCondition); breakTargets.push(end); continueTargets.push(conditionNode); connect(data, conditionNode); final Boolean condition = evaluateCondition(node.getCondition()); final ControlFlowNode bodyStart = createStartNode(node.getEmbeddedStatement()); if (!Boolean.FALSE.equals(condition)) { connect(conditionNode, bodyStart, ControlFlowEdgeType.ConditionTrue); } final ControlFlowNode bodyEnd = node.getEmbeddedStatement().acceptVisitor(this, bodyStart); connect(bodyEnd, conditionNode); if (!Boolean.TRUE.equals(condition)) { connect(conditionNode, end, ControlFlowEdgeType.ConditionFalse); } breakTargets.pop(); continueTargets.pop(); nodes.add(end); return end; }
@Override public ControlFlowNode visitWhileStatement(final WhileStatement node, final ControlFlowNode data) { final ControlFlowNode end = createEndNode(node, false); final ControlFlowNode conditionNode = createSpecialNode(node, ControlFlowNodeType.LoopCondition); breakTargets.push(end); continueTargets.push(conditionNode); connect(data, conditionNode); final Boolean condition = evaluateCondition(node.getCondition()); final ControlFlowNode bodyStart = createStartNode(node.getEmbeddedStatement()); if (!Boolean.FALSE.equals(condition)) { connect(conditionNode, bodyStart, ControlFlowEdgeType.ConditionTrue); } final ControlFlowNode bodyEnd = node.getEmbeddedStatement().acceptVisitor(this, bodyStart); connect(bodyEnd, conditionNode); if (!Boolean.TRUE.equals(condition)) { connect(conditionNode, end, ControlFlowEdgeType.ConditionFalse); } breakTargets.pop(); continueTargets.pop(); nodes.add(end); return end; }
final ControlFlowNode newData = handleStatementList(node.getInitializers(), data); final ControlFlowNode end = createEndNode(node, false); final ControlFlowNode conditionNode = createSpecialNode(node, ControlFlowNodeType.LoopCondition);
final ControlFlowNode newData = handleStatementList(node.getInitializers(), data); final ControlFlowNode end = createEndNode(node, false); final ControlFlowNode conditionNode = createSpecialNode(node, ControlFlowNodeType.LoopCondition);
final ControlFlowNode newData = handleStatementList(node.getInitializers(), data); final ControlFlowNode end = createEndNode(node, false); final ControlFlowNode conditionNode = createSpecialNode(node, ControlFlowNodeType.LoopCondition);