public void analyze(final String variable, final DefiniteAssignmentStatus initialStatus) { this.variableName = variable; try { unassignedVariableUses.clear(); for (final DefiniteAssignmentNode node : allNodes) { node.setNodeStatus(DefiniteAssignmentStatus.CODE_UNREACHABLE); for (final ControlFlowEdge edge : node.getOutgoing()) { edgeStatus.put(edge, DefiniteAssignmentStatus.CODE_UNREACHABLE); } } changeNodeStatus(allNodes.get(analyzedRangeStart), initialStatus); while (!nodesWithModifiedInput.isEmpty()) { final DefiniteAssignmentNode node = nodesWithModifiedInput.poll(); DefiniteAssignmentStatus inputStatus = DefiniteAssignmentStatus.CODE_UNREACHABLE; for (final ControlFlowEdge edge : node.getIncoming()) { inputStatus = mergeStatus(inputStatus, edgeStatus.get(edge)); } changeNodeStatus(node, inputStatus); } } finally { this.variableName = null; } }
public void analyze(final String variable, final DefiniteAssignmentStatus initialStatus) { this.variableName = variable; try { unassignedVariableUses.clear(); for (final DefiniteAssignmentNode node : allNodes) { node.setNodeStatus(DefiniteAssignmentStatus.CODE_UNREACHABLE); for (final ControlFlowEdge edge : node.getOutgoing()) { edgeStatus.put(edge, DefiniteAssignmentStatus.CODE_UNREACHABLE); } } changeNodeStatus(allNodes.get(analyzedRangeStart), initialStatus); while (!nodesWithModifiedInput.isEmpty()) { final DefiniteAssignmentNode node = nodesWithModifiedInput.poll(); DefiniteAssignmentStatus inputStatus = DefiniteAssignmentStatus.CODE_UNREACHABLE; for (final ControlFlowEdge edge : node.getIncoming()) { inputStatus = mergeStatus(inputStatus, edgeStatus.get(edge)); } changeNodeStatus(node, inputStatus); } } finally { this.variableName = null; } }
public void analyze(final String variable, final DefiniteAssignmentStatus initialStatus) { this.variableName = variable; try { unassignedVariableUses.clear(); for (final DefiniteAssignmentNode node : allNodes) { node.setNodeStatus(DefiniteAssignmentStatus.CODE_UNREACHABLE); for (final ControlFlowEdge edge : node.getOutgoing()) { edgeStatus.put(edge, DefiniteAssignmentStatus.CODE_UNREACHABLE); } } changeNodeStatus(allNodes.get(analyzedRangeStart), initialStatus); while (!nodesWithModifiedInput.isEmpty()) { final DefiniteAssignmentNode node = nodesWithModifiedInput.poll(); DefiniteAssignmentStatus inputStatus = DefiniteAssignmentStatus.CODE_UNREACHABLE; for (final ControlFlowEdge edge : node.getIncoming()) { inputStatus = mergeStatus(inputStatus, edgeStatus.get(edge)); } changeNodeStatus(node, inputStatus); } } finally { this.variableName = null; } }
for (final ControlFlowEdge edge : node.getOutgoing()) { if (edge.getType() == ControlFlowEdgeType.ConditionTrue && outputStatus == DefiniteAssignmentStatus.ASSIGNED_AFTER_TRUE_EXPRESSION) { for (final ControlFlowEdge edge : n.getOutgoing()) { if (edge.isLeavingTryFinally() && contains(edge.getTryFinallyStatements(), tryFinally)) { final DefiniteAssignmentStatus s = edgeStatus.get(edge); for (final ControlFlowEdge edge : node.getOutgoing()) { changeEdgeStatus(edge, outputStatus);
for (final ControlFlowEdge edge : node.getOutgoing()) { if (edge.getType() == ControlFlowEdgeType.ConditionTrue && outputStatus == DefiniteAssignmentStatus.ASSIGNED_AFTER_TRUE_EXPRESSION) { for (final ControlFlowEdge edge : n.getOutgoing()) { if (edge.isLeavingTryFinally() && contains(edge.getTryFinallyStatements(), tryFinally)) { final DefiniteAssignmentStatus s = edgeStatus.get(edge); for (final ControlFlowEdge edge : node.getOutgoing()) { changeEdgeStatus(edge, outputStatus);
for (final ControlFlowEdge edge : node.getOutgoing()) { if (edge.getType() == ControlFlowEdgeType.ConditionTrue && outputStatus == DefiniteAssignmentStatus.ASSIGNED_AFTER_TRUE_EXPRESSION) { for (final ControlFlowEdge edge : n.getOutgoing()) { if (edge.isLeavingTryFinally() && contains(edge.getTryFinallyStatements(), tryFinally)) { final DefiniteAssignmentStatus s = edgeStatus.get(edge); for (final ControlFlowEdge edge : node.getOutgoing()) { changeEdgeStatus(edge, outputStatus);