Skip to content

Commit b56ac21

Browse files
committed
Fix Method Check Ordering
1 parent 707afb1 commit b56ac21

File tree

2 files changed

+11
-5
lines changed

2 files changed

+11
-5
lines changed

liquidjava-verifier/src/main/java/liquidjava/processor/refinement_checker/general_checkers/MethodsFunctionsChecker.java

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -286,16 +286,22 @@ private Map<String, String> checkInvocationRefinements(CtElement invocation, Lis
286286
return new HashMap<>();
287287
Map<String, String> map = mapInvocation(arguments, f);
288288

289-
if (target != null) {
290-
AuxStateHandler.checkTargetChanges(rtc, f, target, map, invocation);
291-
}
289+
if (target != null)
290+
AuxStateHandler.prepareInvocationTarget(rtc, target, invocation);
291+
292292
if (f.allRefinementsTrue()) {
293+
if (target != null)
294+
AuxStateHandler.checkTargetChanges(rtc, f, target, map, invocation);
295+
293296
invocation.putMetadata(Keys.REFINEMENT, new Predicate());
294297
return map;
295298
}
296299

297300
checkParameters(invocation, arguments, f, map);
298301

302+
if (target != null)
303+
AuxStateHandler.checkTargetChanges(rtc, f, target, map, invocation);
304+
299305
// -- Part 2: Apply changes
300306
// applyRefinementsToArguments(element, arguments, f, map);
301307
Predicate methodRef = f.getRefReturn();

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -359,7 +359,7 @@ public static void addStateRefinements(TypeChecker tc, String varName, CtExpress
359359
*/
360360
public static void checkTargetChanges(TypeChecker tc, RefinedFunction f, CtExpression<?> target2,
361361
Map<String, String> map, CtElement invocation) throws LJError {
362-
String parentTargetName = searchFistVariableTarget(tc, target2, invocation);
362+
String parentTargetName = prepareInvocationTarget(tc, target2, invocation);
363363
VariableInstance target = getTarget(invocation);
364364
if (target != null) {
365365
if (f.hasStateChange() && !f.getFromStates().isEmpty()) {
@@ -576,7 +576,7 @@ private static void addInstanceWithState(TypeChecker tc, String superName, Strin
576576
*
577577
* @return the name of the parent target
578578
*/
579-
static String searchFistVariableTarget(TypeChecker tc, CtElement target2, CtElement invocation) {
579+
public static String prepareInvocationTarget(TypeChecker tc, CtElement target2, CtElement invocation) {
580580
if (target2 instanceof CtVariableRead<?> v) {
581581
// v--------- field read
582582
// means invocation is in a form of `t.method(args)`

0 commit comments

Comments
 (0)