X-Git-Url: http://plrg.eecs.uci.edu/git/?p=repair.git;a=blobdiff_plain;f=Repair%2FRepairCompiler%2FMCC%2FIR%2FRelationQuantifier.java;h=fb1291a2bfa3dcd91f088acefc35adb24ef4072c;hp=858f338636f4fe07a158ef8c998f8373699b37fa;hb=d0cc93fb75919256c617501584fdbd8cd6bfd35e;hpb=3e4091248270631ee6dab18b323d0c441a4e4ae1 diff --git a/Repair/RepairCompiler/MCC/IR/RelationQuantifier.java b/Repair/RepairCompiler/MCC/IR/RelationQuantifier.java index 858f338..fb1291a 100755 --- a/Repair/RepairCompiler/MCC/IR/RelationQuantifier.java +++ b/Repair/RepairCompiler/MCC/IR/RelationQuantifier.java @@ -36,11 +36,13 @@ public class RelationQuantifier extends Quantifier { writer.addDeclaration("struct SimpleIterator",x.getSafeSymbol()+"_iterator"); writer.outputline("for (SimpleHashiterator("+relation.getSafeSymbol()+"_hash, &"+x.getSafeSymbol()+"_iterator); hasNext(&"+x.getSafeSymbol()+"_iterator); )"); writer.startblock(); - writer.addDeclaration(y.getType().getGenerateType().toString(), y.getSafeSymbol()); - writer.outputline(y.getSafeSymbol() + " = (" + y.getType().getGenerateType() + ") next(&"+x.getSafeSymbol()+"_iterator);"); - // #ATTN#: key is called second because next() forwards ptr and key does not! - writer.addDeclaration(x.getType().getGenerateType().toString(), x.getSafeSymbol()); + // #ATTN#: key is called first because next() forwards ptr and key does not! + writer.addDeclaration(x.getType().getGenerateType().toString(), x.getSafeSymbol()); writer.outputline(x.getSafeSymbol() + " = (" + x.getType().getGenerateType() + ") key(&"+x.getSafeSymbol()+"_iterator);"); + + writer.addDeclaration(y.getType().getGenerateType().toString(), y.getSafeSymbol()); + writer.outputline(y.getSafeSymbol() + " = (" + y.getType().getGenerateType() + ") next(&"+x.getSafeSymbol()+"_iterator);"); + } public void generate_open(CodeWriter writer, String type,int number, String left,String right) { @@ -64,8 +66,8 @@ public class RelationQuantifier extends Quantifier { writer.endblock(); writer.outputline("else"); writer.startblock(); - writer.outputline(y.getSafeSymbol() + " = (" + y.getType().getGenerateType() + ") next(&"+x.getSafeSymbol()+"_iterator);"); writer.outputline(x.getSafeSymbol() + " = (" + x.getType().getGenerateType() + ") key(&"+x.getSafeSymbol()+"_iterator);"); + writer.outputline(y.getSafeSymbol() + " = (" + y.getType().getGenerateType() + ") next(&"+x.getSafeSymbol()+"_iterator);"); writer.endblock(); }