Skip to content

Commit 90007df

Browse files
committed
Improve Ghost Default Values in AuxStateHandler
1 parent 57bbf02 commit 90007df

File tree

1 file changed

+9
-13
lines changed
  • liquidjava-verifier/src/main/java/liquidjava/processor/refinement_checker/object_checkers

1 file changed

+9
-13
lines changed

liquidjava-verifier/src/main/java/liquidjava/processor/refinement_checker/object_checkers/AuxStateHandler.java

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -79,19 +79,15 @@ public static void setDefaultState(RefinedFunction f, TypeChecker tc) {
7979
Predicate c = new Predicate();
8080
List<GhostFunction> sets = getDifferentSets(tc, klass); // ??
8181
for (GhostFunction sg : sets) {
82-
if (sg.getReturnType().toString().equals("int")) {
83-
Predicate p = Predicate.createEquals(Predicate.createInvocation(sg.getName(), s),
84-
Predicate.createLit("0", Utils.INT));
85-
c = Predicate.createConjunction(c, p);
86-
} else if (sg.getReturnType().toString().equals("boolean")) {
87-
Predicate p = Predicate.createEquals(Predicate.createInvocation(sg.getName(), s),
88-
Predicate.createLit("false", Utils.BOOLEAN));
89-
c = Predicate.createConjunction(c, p);
90-
} else {
91-
// TODO: Implement other stuff
92-
throw new RuntimeException("Ghost Functions not implemented for other types than int/boolean -> implement in"
93-
+ " AuxStateHandler defaultState");
94-
}
82+
String retType = sg.getReturnType().toString();
83+
Predicate typePredicate = switch (retType) {
84+
case "int" -> Predicate.createLit("0", Utils.INT);
85+
case "boolean" -> Predicate.createLit("false", Utils.BOOLEAN);
86+
case "double" -> Predicate.createLit("0.0", Utils.DOUBLE);
87+
default -> throw new RuntimeException("Ghost not implemented for type " + retType);
88+
};
89+
Predicate p = Predicate.createEquals(Predicate.createInvocation(sg.getName(), s), typePredicate);
90+
c = Predicate.createConjunction(c, p);
9591
}
9692
ObjectState os = new ObjectState();
9793
os.setTo(c);

0 commit comments

Comments
 (0)