@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 visitTryCatchStatement(final TryCatchStatement node, final ControlFlowNode data) { final boolean hasFinally = !node.getFinallyBlock().isNull(); final ControlFlowNode end = createEndNode(node, false); ControlFlowEdge edge = connect(handleEmbeddedStatement(node.getTryBlock(), data), end); if (hasFinally) { edge.AddJumpOutOfTryFinally(node); } for (final CatchClause cc : node.getCatchClauses()) { edge = connect(handleEmbeddedStatement(cc.getBody(), data), end); if (hasFinally) { edge.AddJumpOutOfTryFinally(node); } } if (hasFinally) { handleEmbeddedStatement(node.getFinallyBlock(), data); } nodes.add(end); return end; }
@Override public ControlFlowNode visitTryCatchStatement(final TryCatchStatement node, final ControlFlowNode data) { final boolean hasFinally = !node.getFinallyBlock().isNull(); final ControlFlowNode end = createEndNode(node, false); ControlFlowEdge edge = connect(handleEmbeddedStatement(node.getTryBlock(), data), end); if (hasFinally) { edge.AddJumpOutOfTryFinally(node); } for (final CatchClause cc : node.getCatchClauses()) { edge = connect(handleEmbeddedStatement(cc.getBody(), data), end); if (hasFinally) { edge.AddJumpOutOfTryFinally(node); } } if (hasFinally) { handleEmbeddedStatement(node.getFinallyBlock(), data); } nodes.add(end); return end; }
@Override public ControlFlowNode visitTryCatchStatement(final TryCatchStatement node, final ControlFlowNode data) { final boolean hasFinally = !node.getFinallyBlock().isNull(); final ControlFlowNode end = createEndNode(node, false); ControlFlowEdge edge = connect(handleEmbeddedStatement(node.getTryBlock(), data), end); if (hasFinally) { edge.AddJumpOutOfTryFinally(node); } for (final CatchClause cc : node.getCatchClauses()) { edge = connect(handleEmbeddedStatement(cc.getBody(), data), end); if (hasFinally) { edge.AddJumpOutOfTryFinally(node); } } if (hasFinally) { handleEmbeddedStatement(node.getFinallyBlock(), data); } nodes.add(end); return end; }
@Override public ControlFlowNode visitSynchronizedStatement(final SynchronizedStatement node, final ControlFlowNode data) { final ControlFlowNode bodyEnd = handleEmbeddedStatement(node.getEmbeddedStatement(), data); return createConnectedEndNode(node, bodyEnd); } }
@Override public ControlFlowNode visitSynchronizedStatement(final SynchronizedStatement node, final ControlFlowNode data) { final ControlFlowNode bodyEnd = handleEmbeddedStatement(node.getEmbeddedStatement(), data); return createConnectedEndNode(node, bodyEnd); } }
@Override public ControlFlowNode visitSynchronizedStatement(final SynchronizedStatement node, final ControlFlowNode data) { final ControlFlowNode bodyEnd = handleEmbeddedStatement(node.getEmbeddedStatement(), data); return createConnectedEndNode(node, bodyEnd); } }