diff --git a/liquidjava-example/src/main/java/testSuite/CorrectStateAndParameterRefinementThis.java b/liquidjava-example/src/main/java/testSuite/CorrectStateAndParameterRefinementThis.java new file mode 100644 index 00000000..2cebb43d --- /dev/null +++ b/liquidjava-example/src/main/java/testSuite/CorrectStateAndParameterRefinementThis.java @@ -0,0 +1,15 @@ +package testSuite; + +import liquidjava.specification.Ghost; +import liquidjava.specification.Refinement; +import liquidjava.specification.RefinementPredicate; +import liquidjava.specification.StateRefinement; +import liquidjava.specification.StateSet; + +@Ghost("int progress") +@StateSet({"downloading", "completed"}) +public class CorrectStateAndParameterRefinementThis { + + @StateRefinement(from = "downloading(this)", to = "progress(this) == percentage") + public void updateProgress(@Refinement("percentage > progress(this)") int percentage) {} +} diff --git a/liquidjava-verifier/src/main/java/liquidjava/processor/refinement_checker/object_checkers/AuxStateHandler.java b/liquidjava-verifier/src/main/java/liquidjava/processor/refinement_checker/object_checkers/AuxStateHandler.java index 9d435dff..c1a9320e 100644 --- a/liquidjava-verifier/src/main/java/liquidjava/processor/refinement_checker/object_checkers/AuxStateHandler.java +++ b/liquidjava-verifier/src/main/java/liquidjava/processor/refinement_checker/object_checkers/AuxStateHandler.java @@ -216,6 +216,7 @@ private static Predicate createStatePredicate(String value, String targetClass, CtTypeReference r = tc.getFactory().Type().createReference(targetClass); String nameOld = String.format(Formats.INSTANCE, Keys.THIS, tc.getContext().getCounter()); String name = String.format(Formats.INSTANCE, Keys.THIS, tc.getContext().getCounter()); + tc.getContext().addVarToContext(Keys.THIS, r, new Predicate(), e); tc.getContext().addVarToContext(name, r, new Predicate(), e); tc.getContext().addVarToContext(nameOld, r, new Predicate(), e); // TODO REVIEW!! @@ -616,4 +617,4 @@ private static List> getStateAnnotation(CtEle .getCanonicalName().contentEquals("liquidjava.specification.StateRefinement")) .collect(Collectors.toList()); } -} \ No newline at end of file +}