public Object visitStmtFor(StmtFor stmt) { Statement newInit = null; if (stmt.getInit() != null) { newInit = (Statement) stmt.getInit().accept(this); } if (stmt.getCond() != null) { stmt.getCond().accept(new UpgradeStarToInt(this, TypePrimitive.bittype, nres)); } Expression newCond = stmt.getCond(); Statement newIncr = null; if (stmt.getIncr() != null) { newIncr = (Statement) stmt.getIncr().accept(this); } Statement tmp = stmt.getBody(); Statement newBody = StmtEmpty.EMPTY; if (tmp != null) { newBody = (Statement) tmp.accept(this); } if (newInit == stmt.getInit() && newCond == stmt.getCond() && newIncr == stmt.getIncr() && newBody == stmt.getBody()) return stmt; return new StmtFor(stmt, newInit, newCond, newIncr, newBody, stmt.isCanonical()); }
private Type matchTypes(Statement stmt, String lhsn, Type lt, Type rt) { // if((lt != null && rt != null && !rt.promotesTo(lt))) // { // if((lt != null && rt != null && !rt.promotesTo(lt))) // System.out.println("CRAP"); // } stmt.assertTrue(lt != null && rt != null, "internal error: " + lt + " " + rt); stmt.assertTrue(rt.promotesTo(lt, nres), "Type mismatch " + lt + " !>= " + rt); return lt; }