fix generation of graph files
[repair.git] / Repair / RepairCompiler / MCC / IR / ElementOfExpr.java
index 49b0064fd67a8c526b6c4624f72fcde69e892443..3799435fd8869b11ed5fa78ea682cde078526e50 100755 (executable)
@@ -23,6 +23,14 @@ public class ElementOfExpr extends Expr {
            return true;
        return element.usesDescriptor(d);
     }
+    public Set useDescriptor(Descriptor d) {
+       HashSet newset=new HashSet();
+       if (d==set)
+           newset.add(this);
+       newset.addAll(element.useDescriptor(d));
+       return newset;
+    }
+
     public String name() {
        return element.name()+" in "+set.toString();
     }
@@ -47,10 +55,10 @@ public class ElementOfExpr extends Expr {
     public void generate(CodeWriter writer, VarDescriptor dest) {
         VarDescriptor ed = VarDescriptor.makeNew("element");
         element.generate(writer, ed);
-        writer.outputline("int " + dest.getSafeSymbol() + " = " + 
-                          set.getSafeSymbol() + "_hash->contains(" + ed.getSafeSymbol() + ");");
+        writer.addDeclaration("int", dest.getSafeSymbol());
+        writer.outputline(dest.getSafeSymbol() + " = SimpleHashcontainskey("+set.getSafeSymbol() +"_hash ,"+ ed.getSafeSymbol() + ");");
     }
-    
+
     public void prettyPrint(PrettyPrinter pp) {
         element.prettyPrint(pp);
         pp.output(" in? " + set.getSafeSymbol());
@@ -58,7 +66,7 @@ public class ElementOfExpr extends Expr {
 
     public TypeDescriptor typecheck(SemanticAnalyzer sa) {
         TypeDescriptor td = element.typecheck(sa);
-        
+
         if (td == null) {
             return null;
         }
@@ -69,10 +77,9 @@ public class ElementOfExpr extends Expr {
             sa.getErrorReporter().report(null, "Type mismatch: attempting to test for types '" + td.getSymbol() + "' in set of type '" + settype.getSymbol() + "'");
             return null;
         }
-        
+
         this.td = ReservedTypeDescriptor.INT;
         return this.td;
     }
 
 }
-