Fixed some errors in the Repair Generator code.
[repair.git] / Repair / RepairCompiler / MCC / IR / ExprPredicate.java
index 43ac5ad3ac0d3971bc9a1b179e7ff1a4b2ede44a..64d4ec5a05e3097570a0e3651983ef3472408111 100755 (executable)
@@ -3,13 +3,20 @@ package MCC.IR;
 import java.util.*;
 
 public class ExprPredicate extends Predicate {
-    
     Expr expr;
 
-
     public static final int SIZE=1;
     public static final int COMPARISON=2;
 
+    public TypeDescriptor typecheck(SemanticAnalyzer sa) {
+       TypeDescriptor t=expr.typecheck(sa);
+       return t;
+    }
+
+    public String name() {
+       return expr.name();
+    }
+
     public int getType() {
        if (((OpExpr)expr).left instanceof SizeofExpr)
            return SIZE;
@@ -22,8 +29,13 @@ public class ExprPredicate extends Predicate {
        return ((OpExpr)expr).opcode;
     }
 
-    public int leftsize() {
-       return ((IntegerLiteralExpr)((OpExpr)expr).right).getValue();
+    public int rightSize() {
+       assert isRightInt();
+       return OpExpr.getInt(((OpExpr)expr).right);
+    }
+
+    public boolean isRightInt() {
+       return OpExpr.isInt(((OpExpr)expr).right);
     }
 
     public ExprPredicate(Expr expr) {
@@ -37,8 +49,8 @@ public class ExprPredicate extends Predicate {
         return expr.getInversedRelations();
     }
 
-    public int[] getRepairs(boolean negated) {
-       return expr.getRepairs(negated);
+    public int[] getRepairs(boolean negated, Termination t) {
+       return expr.getRepairs(negated,t);
     }
 
     public Descriptor getDescriptor() {