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;
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) {
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() {