Skip to content

Commit 6f80629

Browse files
committed
Change SimplifiedExpression to SimplifiedPredicate
1 parent 0e276f3 commit 6f80629

7 files changed

Lines changed: 19 additions & 63 deletions

File tree

liquidjava-verifier/src/main/java/liquidjava/rj_language/ast/SimplifiedExpression.java renamed to liquidjava-verifier/src/main/java/liquidjava/rj_language/SimplifiedPredicate.java

Lines changed: 18 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,73 +1,58 @@
1-
package liquidjava.rj_language.ast;
1+
package liquidjava.rj_language;
22

33
import java.util.ArrayList;
44
import java.util.List;
55
import java.util.Objects;
66

7-
import liquidjava.diagnostics.errors.LJError;
8-
import liquidjava.rj_language.visitors.ExpressionVisitor;
97
import spoon.reflect.reference.CtTypeReference;
108

11-
public class SimplifiedExpression extends Expression {
9+
public class SimplifiedPredicate extends Predicate {
1210

13-
private final Expression origin;
11+
private final Predicate simplified;
12+
private final Predicate origin;
1413
private final List<Binder> binders;
1514

16-
public SimplifiedExpression(Expression simplified, Expression origin) {
15+
public SimplifiedPredicate(Predicate simplified, Predicate origin) {
1716
this(simplified, origin, List.of());
1817
}
1918

20-
public SimplifiedExpression(Expression simplified, Expression origin, List<Binder> binders) {
21-
addChild(simplified);
19+
public SimplifiedPredicate(Predicate simplified, Predicate origin, List<Binder> binders) {
20+
super(simplified.getExpression());
21+
this.simplified = simplified;
2222
this.origin = origin;
2323
this.binders = new ArrayList<>(binders);
2424
}
2525

26-
public Expression getSimplifiedExpression() {
27-
return children.get(0);
26+
public Predicate getSimplifiedPredicate() {
27+
return simplified;
2828
}
2929

30-
public Expression getOrigin() {
30+
public Predicate getOrigin() {
3131
return origin;
3232
}
3333

3434
public List<Binder> getBinders() {
3535
return binders;
3636
}
3737

38-
@Override
39-
public <T> T accept(ExpressionVisitor<T> visitor) throws LJError {
40-
return visitor.visitSimplifiedNode(this);
41-
}
42-
43-
@Override
44-
public void getVariableNames(List<String> toAdd) {
45-
getSimplifiedExpression().getVariableNames(toAdd);
46-
}
47-
48-
@Override
49-
public void getStateInvocations(List<String> toAdd, List<String> all) {
50-
getSimplifiedExpression().getStateInvocations(toAdd, all);
51-
}
52-
5338
@Override
5439
public boolean isBooleanTrue() {
55-
return getSimplifiedExpression().isBooleanTrue();
40+
return getSimplifiedPredicate().isBooleanTrue();
5641
}
5742

5843
@Override
59-
public Expression clone() {
60-
return new SimplifiedExpression(getSimplifiedExpression().clone(), origin.clone(), binders);
44+
public SimplifiedPredicate clone() {
45+
return new SimplifiedPredicate(getSimplifiedPredicate().clone(), origin.clone(), binders);
6146
}
6247

6348
@Override
6449
public String toString() {
65-
return getSimplifiedExpression().toString();
50+
return getSimplifiedPredicate().toString();
6651
}
6752

6853
@Override
6954
public int hashCode() {
70-
return Objects.hash(getSimplifiedExpression(), origin, binders);
55+
return Objects.hash(getSimplifiedPredicate(), origin, binders);
7156
}
7257

7358
@Override
@@ -78,8 +63,8 @@ public boolean equals(Object obj) {
7863
return false;
7964
if (getClass() != obj.getClass())
8065
return false;
81-
SimplifiedExpression other = (SimplifiedExpression) obj;
82-
return getSimplifiedExpression().equals(other.getSimplifiedExpression()) && origin.equals(other.origin)
66+
SimplifiedPredicate other = (SimplifiedPredicate) obj;
67+
return getSimplifiedPredicate().equals(other.getSimplifiedPredicate()) && origin.equals(other.origin)
8368
&& binders.equals(other.binders);
8469
}
8570

liquidjava-verifier/src/main/java/liquidjava/rj_language/ast/Expression.java

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -82,9 +82,6 @@ public boolean isLiteral() {
8282
* @return true if it is a boolean expression, false otherwise
8383
*/
8484
public boolean isBooleanExpression() {
85-
if (this instanceof SimplifiedExpression node) {
86-
return node.getSimplifiedExpression().isBooleanExpression();
87-
}
8885
if (this instanceof LiteralBoolean || this instanceof Ite || this instanceof AliasInvocation
8986
|| this instanceof FunctionInvocation) {
9087
return true;
@@ -102,8 +99,6 @@ public boolean isBooleanExpression() {
10299
}
103100

104101
public List<Expression> getConjuncts() {
105-
if (this instanceof SimplifiedExpression node)
106-
return node.getSimplifiedExpression().getConjuncts();
107102
if (this instanceof BinaryExpression binaryExpression && "&&".equals(binaryExpression.getOperator())) {
108103
List<Expression> conjuncts = new ArrayList<>();
109104
conjuncts.addAll(binaryExpression.getFirstOperand().getConjuncts());

liquidjava-verifier/src/main/java/liquidjava/rj_language/ast/formatter/ExpressionFormatter.java

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
import liquidjava.rj_language.ast.LiteralReal;
1818
import liquidjava.rj_language.ast.LiteralString;
1919
import liquidjava.rj_language.ast.Enum;
20-
import liquidjava.rj_language.ast.SimplifiedExpression;
2120
import liquidjava.rj_language.ast.UnaryExpression;
2221
import liquidjava.rj_language.ast.Var;
2322
import liquidjava.rj_language.visitors.ExpressionVisitor;
@@ -62,11 +61,9 @@ private String formatArguments(List<Expression> args) {
6261
}
6362

6463
private Expression unwrapGroup(Expression expression) {
65-
while (expression instanceof GroupExpression || expression instanceof SimplifiedExpression) {
64+
while (expression instanceof GroupExpression) {
6665
if (expression instanceof GroupExpression group)
6766
expression = group.getExpression();
68-
else if (expression instanceof SimplifiedExpression node)
69-
expression = node.getSimplifiedExpression();
7067
}
7168
return expression;
7269
}
@@ -166,11 +163,6 @@ public String visitLiteralString(LiteralString lit) {
166163
return lit.toString();
167164
}
168165

169-
@Override
170-
public String visitSimplifiedNode(SimplifiedExpression node) {
171-
return formatExpression(node.getSimplifiedExpression());
172-
}
173-
174166
@Override
175167
public String visitUnaryExpression(UnaryExpression exp) {
176168
return exp.getOp() + formatOperand(exp, exp.getExpression(), true);

liquidjava-verifier/src/main/java/liquidjava/rj_language/ast/formatter/ExpressionPrecedence.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
import liquidjava.rj_language.ast.Expression;
55
import liquidjava.rj_language.ast.GroupExpression;
66
import liquidjava.rj_language.ast.Ite;
7-
import liquidjava.rj_language.ast.SimplifiedExpression;
87
import liquidjava.rj_language.ast.UnaryExpression;
98

109
public enum ExpressionPrecedence {
@@ -17,8 +16,6 @@ public boolean isLowerThan(ExpressionPrecedence other) {
1716
public static ExpressionPrecedence of(Expression expression) {
1817
if (expression instanceof GroupExpression group)
1918
return of(group.getExpression());
20-
if (expression instanceof SimplifiedExpression node)
21-
return of(node.getSimplifiedExpression());
2219
if (expression instanceof Ite)
2320
return TERNARY;
2421
if (expression instanceof UnaryExpression)

liquidjava-verifier/src/main/java/liquidjava/rj_language/ast/typing/TypeInfer.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
import liquidjava.rj_language.ast.LiteralLong;
1616
import liquidjava.rj_language.ast.LiteralReal;
1717
import liquidjava.rj_language.ast.LiteralString;
18-
import liquidjava.rj_language.ast.SimplifiedExpression;
1918
import liquidjava.rj_language.ast.UnaryExpression;
2019
import liquidjava.rj_language.ast.Var;
2120
import liquidjava.utils.Utils;
@@ -58,9 +57,6 @@ else if (e instanceof FunctionInvocation)
5857
return functionType(ctx, (FunctionInvocation) e);
5958
else if (e instanceof AliasInvocation)
6059
return boolType(factory);
61-
else if (e instanceof SimplifiedExpression)
62-
return getType(ctx, factory, ((SimplifiedExpression) e).getSimplifiedExpression());
63-
6460
return Optional.empty();
6561
}
6662

liquidjava-verifier/src/main/java/liquidjava/rj_language/visitors/ExpressionVisitor.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
import liquidjava.rj_language.ast.LiteralLong;
1414
import liquidjava.rj_language.ast.LiteralReal;
1515
import liquidjava.rj_language.ast.LiteralString;
16-
import liquidjava.rj_language.ast.SimplifiedExpression;
1716
import liquidjava.rj_language.ast.UnaryExpression;
1817
import liquidjava.rj_language.ast.Var;
1918

@@ -40,8 +39,6 @@ public interface ExpressionVisitor<T> {
4039

4140
T visitLiteralString(LiteralString lit) throws LJError;
4241

43-
T visitSimplifiedNode(SimplifiedExpression node) throws LJError;
44-
4542
T visitUnaryExpression(UnaryExpression exp) throws LJError;
4643

4744
T visitEnum(Enum en) throws LJError;

liquidjava-verifier/src/main/java/liquidjava/smt/ExpressionToZ3Visitor.java

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
import liquidjava.rj_language.ast.LiteralLong;
1616
import liquidjava.rj_language.ast.LiteralReal;
1717
import liquidjava.rj_language.ast.LiteralString;
18-
import liquidjava.rj_language.ast.SimplifiedExpression;
1918
import liquidjava.rj_language.ast.UnaryExpression;
2019
import liquidjava.rj_language.ast.Var;
2120
import liquidjava.rj_language.visitors.ExpressionVisitor;
@@ -114,11 +113,6 @@ public Expr<?> visitLiteralString(LiteralString lit) {
114113
return ctx.makeString(lit.toString());
115114
}
116115

117-
@Override
118-
public Expr<?> visitSimplifiedNode(SimplifiedExpression node) throws LJError {
119-
return node.getSimplifiedExpression().accept(this);
120-
}
121-
122116
@Override
123117
public Expr<?> visitUnaryExpression(UnaryExpression exp) throws LJError {
124118
return switch (exp.getOp()) {

0 commit comments

Comments
 (0)