@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; }
: evaluateCondition(node.getCondition());
: evaluateCondition(node.getCondition());
: evaluateCondition(node.getCondition());
@Override public ControlFlowNode visitIfElseStatement(final IfElseStatement node, final ControlFlowNode data) { final Boolean condition = evaluateCondition(node.getCondition()); final ControlFlowNode trueBegin = createStartNode(node.getTrueStatement());
@Override public ControlFlowNode visitIfElseStatement(final IfElseStatement node, final ControlFlowNode data) { final Boolean condition = evaluateCondition(node.getCondition()); final ControlFlowNode trueBegin = createStartNode(node.getTrueStatement());
@Override public ControlFlowNode visitIfElseStatement(final IfElseStatement node, final ControlFlowNode data) { final Boolean condition = evaluateCondition(node.getCondition()); final ControlFlowNode trueBegin = createStartNode(node.getTrueStatement());