Skip to content

Commit d8e500d

Browse files
committed
Merge branch 'main' into null-support
2 parents 8998f23 + 3fefa2f commit d8e500d

File tree

5 files changed

+63
-9
lines changed

5 files changed

+63
-9
lines changed
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
// Refinement Error
2+
package testSuite;
3+
4+
import liquidjava.specification.Refinement;
5+
6+
@SuppressWarnings("unused")
7+
public class CorrectBoxedTypes {
8+
public static void main(String[] args) {
9+
@Refinement("_ == true")
10+
Boolean b = true;
11+
12+
@Refinement("_ > 0")
13+
Integer i = 1;
14+
15+
@Refinement("_ > 0")
16+
Double d = 1.0;
17+
}
18+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
// Refinement Error
2+
package testSuite;
3+
4+
import liquidjava.specification.Refinement;
5+
6+
@SuppressWarnings("unused")
7+
public class ErrorBoxedBoolean {
8+
public static void main(String[] args) {
9+
@Refinement("_ == true")
10+
Boolean b = false;
11+
}
12+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
// Refinement Error
2+
package testSuite;
3+
4+
import liquidjava.specification.Refinement;
5+
6+
@SuppressWarnings("unused")
7+
public class ErrorBoxedDouble {
8+
public static void main(String[] args) {
9+
@Refinement("_ > 0")
10+
Double d = -1.0;
11+
}
12+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
// Refinement Error
2+
package testSuite;
3+
4+
import liquidjava.specification.Refinement;
5+
6+
@SuppressWarnings("unused")
7+
public class ErrorBoxedInteger {
8+
public static void main(String[] args) {
9+
@Refinement("_ > 0")
10+
Integer j = -1;
11+
}
12+
}

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

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -42,10 +42,10 @@ public static void storeVariablesSubtypes(Context z3, List<RefinedVariable> vari
4242
private static Expr<?> getExpr(Context z3, String name, CtTypeReference<?> type) {
4343
String typeName = type.getQualifiedName();
4444
return switch (typeName) {
45-
case "int", "short" -> z3.mkIntConst(name);
46-
case "boolean" -> z3.mkBoolConst(name);
47-
case "long" -> z3.mkRealConst(name);
48-
case "float", "double" -> (FPExpr) z3.mkConst(name, z3.mkFPSort64());
45+
case "int", "short", "java.lang.Integer", "java.lang.Short" -> z3.mkIntConst(name);
46+
case "boolean", "java.lang.Boolean" -> z3.mkBoolConst(name);
47+
case "long", "java.lang.Long" -> z3.mkRealConst(name);
48+
case "float", "double", "java.lang.Float", "java.lang.Double" -> (FPExpr) z3.mkConst(name, z3.mkFPSort64());
4949
case "int[]" -> z3.mkArrayConst(name, z3.mkIntSort(), z3.mkIntSort());
5050
default -> z3.mkConst(name, z3.mkUninterpretedSort(typeName));
5151
};
@@ -81,11 +81,11 @@ private static void addBuiltinFunctions(Context z3, Map<String, FuncDecl<?>> fun
8181

8282
static Sort getSort(Context z3, String sort) {
8383
return switch (sort) {
84-
case "int" -> z3.getIntSort();
85-
case "boolean" -> z3.getBoolSort();
86-
case "long" -> z3.getRealSort();
87-
case "float" -> z3.mkFPSort32();
88-
case "double" -> z3.mkFPSortDouble();
84+
case "int", "short", "java.lang.Integer", "java.lang.Short" -> z3.getIntSort();
85+
case "boolean", "java.lang.Boolean" -> z3.getBoolSort();
86+
case "long", "java.lang.Long" -> z3.getRealSort();
87+
case "float", "java.lang.Float" -> z3.mkFPSort32();
88+
case "double", "java.lang.Double" -> z3.mkFPSortDouble();
8989
case "int[]" -> z3.mkArraySort(z3.mkIntSort(), z3.mkIntSort());
9090
case "String" -> z3.getStringSort();
9191
case "void" -> z3.mkUninterpretedSort("void");

0 commit comments

Comments
 (0)