@Override public Boolean visit(IfStmt n, Void arg) { if (n.getElseStmt().isPresent()) { // An if-then-else statement can complete normally iff the then-statement can // complete normally or the else-statement can complete normally. return canCompleteNormally(n.getThenStmt()) || canCompleteNormally(n.getElseStmt().get()); } else { // An if-then statement can complete normally iff it is reachable. return isReachable(n); } }
@Override public Boolean visit(IfStmt n, Void arg) { if (n.getElseStmt().isPresent()) { // An if-then-else statement can complete normally iff the then-statement can // complete normally or the else-statement can complete normally. return canCompleteNormally(n.getThenStmt()) || canCompleteNormally(n.getElseStmt().get()); } else { // An if-then statement can complete normally iff it is reachable. return isReachable(n); } }
@Override public Boolean visit(IfStmt n, Void arg) { if (n.getElseStmt().isPresent()) { // An if-then-else statement can complete normally iff the then-statement can // complete normally or the else-statement can complete normally. return canCompleteNormally(n.getThenStmt()) || canCompleteNormally(n.getElseStmt().get()); } else { // An if-then statement can complete normally iff it is reachable. return isReachable(n); } }
@Override public boolean doIsEquals(IfStmt first, IfStmt second) { if(!isEqualsUseMerger(first.getCondition(),second.getCondition())) return false; if(!isEqualsUseMerger(first.getElseStmt(),second.getElseStmt())) return false; if(!isEqualsUseMerger(first.getThenStmt(),second.getThenStmt())) return false; return true; } }
@Override public IfStmt doMerge(IfStmt first, IfStmt second) { IfStmt is = new IfStmt(); is.setCondition(mergeSingle(first.getCondition(),second.getCondition())); is.setElseStmt(mergeSingle(first.getElseStmt(),second.getElseStmt())); is.setThenStmt(mergeSingle(first.getThenStmt(),second.getThenStmt())); return is; }