Skip to content

Commit e3d8bc1

Browse files
committed
Change RefinementPredicate Target From Methods to Types
1 parent 5cbf73d commit e3d8bc1

File tree

27 files changed

+39
-40
lines changed

27 files changed

+39
-40
lines changed

liquidjava-api/src/main/java/liquidjava/specification/RefinementPredicate.java

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,17 +7,18 @@
77
import java.lang.annotation.Target;
88

99
/**
10-
* Annotation that allows the creation of ghost variables or refinement aliases within method or constructor scope.
10+
* Annotation that allows the creation of custom ghost functions within classes or interfaces.
1111
* <p>
12-
* This annotation enables the declaration of ghosts and refinement aliases.
12+
* This annotation enables the declaration of custom ghost functions.
1313
* <p>
1414
* <strong>Example:</strong>
1515
* <pre>
1616
* {@code
17-
* @RefinementPredicate("ghost int size")
18-
* @RefinementPredicate("type Nat(int x) { x > 0 }")
19-
* public void process() {
20-
* // ...
17+
* @RefinementPredicate("int totalPrice(Order o)")
18+
* public class Order {
19+
* @StateRefinement(to = "totalPrice(this) == 0")
20+
* public Order() {
21+
* }
2122
* }
2223
* }
2324
* </pre>
@@ -27,18 +28,17 @@
2728
* @author Catarina Gamboa
2829
*/
2930
@Retention(RetentionPolicy.RUNTIME)
30-
@Target({ElementType.METHOD, ElementType.CONSTRUCTOR})
31+
@Target({ElementType.TYPE})
3132
@Repeatable(RefinementPredicateMultiple.class)
3233
public @interface RefinementPredicate {
3334

3435
/**
35-
* The refinement predicate string, which can define a ghost variable or a refinement alias.
36+
* The refinement predicate string, which defines a ghost function declaration.
3637
* <p>
3738
* <strong>Example:</strong>
3839
* <pre>
3940
* {@code
40-
* @RefinementPredicate("ghost int size")
41-
* @RefinementPredicate("type Nat(int x) { x > 0 }")
41+
* @RefinementPredicate("int totalPrice(Order o)")
4242
* }
4343
* </pre>
4444
*/

liquidjava-api/src/main/java/liquidjava/specification/RefinementPredicateMultiple.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
* @author Catarina Gamboa
1212
*/
1313
@Retention(RetentionPolicy.RUNTIME)
14-
@Target({ElementType.METHOD, ElementType.CONSTRUCTOR})
14+
@Target({ElementType.TYPE})
1515
public @interface RefinementPredicateMultiple {
1616
RefinementPredicate[] value();
1717
}

liquidjava-example/src/main/java/testMultiple/warnings/NonExistentConstructor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@
55
import liquidjava.specification.StateRefinement;
66

77
@ExternalRefinementsFor("java.util.ArrayList")
8+
@RefinementPredicate("int size(ArrayList l)")
89
public interface NonExistentConstructor<E> {
910

10-
@RefinementPredicate("int size(ArrayList l)")
1111
@StateRefinement(to = "size(this) == 0")
1212
public void ArrayList(String wrongParameter);
1313

liquidjava-example/src/main/java/testMultiple/warnings/NonExistentMethod.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@
55
import liquidjava.specification.StateRefinement;
66

77
@ExternalRefinementsFor("java.util.ArrayList")
8+
@RefinementPredicate("int size(ArrayList l)")
89
public interface NonExistentMethod<E> {
910

10-
@RefinementPredicate("int size(ArrayList l)")
1111
@StateRefinement(to = "size(this) == 0")
1212
public void ArrayList();
1313

liquidjava-example/src/main/java/testSuite/CorrectSearchValueIndexArray.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@
33
import liquidjava.specification.Refinement;
44
import liquidjava.specification.RefinementPredicate;
55

6+
@RefinementPredicate("int length(int[])")
67
public class CorrectSearchValueIndexArray {
78

8-
@RefinementPredicate("int length(int[])")
99
@Refinement("(_ >= -1) && (_ < length(l))")
1010
public static int getIndexWithValue(
1111
@Refinement("length(l) > 0") int[] l, @Refinement("i >= 0 && i < length(l)") int i, int val) {

liquidjava-example/src/main/java/testSuite/ErrorGhostArgsTypes.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
import liquidjava.specification.Refinement;
44
import liquidjava.specification.RefinementPredicate;
55

6+
@RefinementPredicate("boolean open(int)")
67
public class ErrorGhostArgsTypes {
7-
@RefinementPredicate("boolean open(int)")
88
@Refinement("open(4.5) == true")
99
public int one() {
1010
return 1; // Argument Mismatch Error

liquidjava-example/src/main/java/testSuite/ErrorGhostNumberArgs.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,8 @@
33
import liquidjava.specification.Refinement;
44
import liquidjava.specification.RefinementPredicate;
55

6+
@RefinementPredicate("boolean open(int)")
67
public class ErrorGhostNumberArgs {
7-
8-
@RefinementPredicate("boolean open(int)")
98
@Refinement("open(1,2) == true")
109
public int one() {
1110
return 1; // Argument Mismatch Error

liquidjava-example/src/main/java/testSuite/ErrorImplementationSearchValueIntArray.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@
33
import liquidjava.specification.Refinement;
44
import liquidjava.specification.RefinementPredicate;
55

6+
@RefinementPredicate("int length(int[])")
67
public class ErrorImplementationSearchValueIntArray {
78

8-
@RefinementPredicate("int length(int[])")
99
@Refinement("(_ >= -1) && (_ < length(l))")
1010
public static int getIndexWithValue(
1111
@Refinement("length(l) > 0") int[] l, @Refinement("i >= 0 && i < length(l)") int i, int val) {

liquidjava-example/src/main/java/testSuite/ErrorSearchValueIntArray.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@
33
import liquidjava.specification.Refinement;
44
import liquidjava.specification.RefinementPredicate;
55

6+
@RefinementPredicate("int length(int[])")
67
public class ErrorSearchValueIntArray {
78

8-
@RefinementPredicate("int length(int[])")
99
@Refinement("(_ >= -1) && (_ < length(l))")
1010
public static int getIndexWithValue(
1111
@Refinement("length(l) > 0") int[] l, @Refinement("i >= 0 && i < length(l)") int i, int val) {

liquidjava-example/src/main/java/testSuite/WarningExtRefNonExistentMethod.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@
55
import liquidjava.specification.StateRefinement;
66

77
@ExternalRefinementsFor("java.util.ArrayList")
8+
@RefinementPredicate("int size(ArrayList l)")
89
public interface WarningExtRefNonExistentMethod<E> {
910

10-
@RefinementPredicate("int size(ArrayList l)")
1111
@StateRefinement(to = "size(this) == 0")
1212
public void ArrayList();
1313

0 commit comments

Comments
 (0)