void () { VarNamesCollector vc = varproc.getVarNamesCollector(); for (Entry<Integer, Statement> en : mapVarDefStatements.entrySet()) { Statement stat = en.getValue(); Integer index = en.getKey(); if (implDefVars.contains(index)) { // already implicitly defined continue; } varproc.setVarName(new VarVersionPair(index.intValue(), 0), vc.getFreeName(index)); // special case for if (stat.type == StatementType.DO) { DoStatement dstat = (DoStatement)stat; if (dstat.getLoopType() == LoopType.FOR) { if (dstat.getInitExprent() != null && setDefinition(dstat.getInitExprent(), index)) { continue; } else { List<Exprent> lstSpecial = Arrays.asList(dstat.getConditionExprent(), dstat.getIncExprent()); for (VarExprent var : getAllVars(lstSpecial)) { if (var.getIndex() == index) { stat = stat.getParent(); break; } } } } } Statement first = findFirstBlock(stat, index); List<Exprent> lst; if (first == null) { lst = stat.getVarDefinitions(); } else if (first.getExprents() == null) { lst = first.getVarDefinitions(); } else { lst = first.getExprents(); } boolean defset = false; // search for the first assignment to var [index] int addindex = 0; for (Exprent expr : lst) { if (setDefinition(expr, index)) { defset = true; break; } else { boolean foundvar = false; for (Exprent exp : expr.getAllExprents(true)) { if (exp.type == Exprent.EXPRENT_VAR && ((VarExprent)exp).getIndex() == index) { foundvar = true; break; } } if (foundvar) { break; } } addindex++; } if (!defset) { VarExprent var = new VarExprent(index, varproc.getVarType(new VarVersionPair(index.intValue(), 0)), varproc); var.setDefinition(true); lst.add(addindex, var); } } }