Skip to content

Commit 8ce21e1

Browse files
committed
Revert Previous Changes to AuxStateHandler
1 parent 9ffe9d9 commit 8ce21e1

File tree

1 file changed

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

1 file changed

+9
-10
lines changed

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

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -465,14 +465,13 @@ private static void changeState(TypeChecker tc, VariableInstance vi, List<Object
465465
.substituteVariable(name, instanceName);
466466

467467
boolean found = false;
468-
String newInstanceName = String.format(Formats.INSTANCE, name, tc.getContext().getCounter());
468+
469469
for (ObjectState stateChange : stateChanges) { // TODO: only working for 1 state annotation
470-
if (found) {
470+
if (found)
471471
break;
472-
}
473-
if (!stateChange.hasFrom()) {
472+
if (!stateChange.hasFrom())
474473
continue;
475-
}
474+
476475
// replace "state(this)" to "state(whatever method is called from) and so on"
477476
Predicate expectState = stateChange.getFrom().substituteVariable(Keys.THIS, instanceName);
478477
Predicate prevCheck = prevState;
@@ -483,7 +482,8 @@ private static void changeState(TypeChecker tc, VariableInstance vi, List<Object
483482
expectState = expectState.changeOldMentions(vi.getName(), instanceName);
484483

485484
found = tc.checkStateSMT(prevCheck, expectState, invocation.getPosition());
486-
if (stateChange.hasTo()) {
485+
if (found && stateChange.hasTo()) {
486+
String newInstanceName = String.format(Formats.INSTANCE, name, tc.getContext().getCounter());
487487
Predicate transitionedState = stateChange.getTo().substituteVariable(Keys.WILDCARD, newInstanceName)
488488
.substituteVariable(Keys.THIS, newInstanceName);
489489
for (String s : map.keySet()) {
@@ -498,17 +498,16 @@ private static void changeState(TypeChecker tc, VariableInstance vi, List<Object
498498
Predicate expectedStatesDisjunction = stateChanges.stream().filter(ObjectState::hasFrom)
499499
.map(ObjectState::getFrom)
500500
.reduce(Predicate.createLit("false", Types.BOOLEAN), Predicate::createDisjunction);
501-
expectedStatesDisjunction = expectedStatesDisjunction.substituteVariable(Keys.THIS, newInstanceName);
501+
expectedStatesDisjunction = expectedStatesDisjunction.substituteVariable(Keys.THIS, instanceName);
502502
for (String s : map.keySet()) {
503503
expectedStatesDisjunction = expectedStatesDisjunction.substituteVariable(s, map.get(s));
504504
}
505-
expectedStatesDisjunction = expectedStatesDisjunction.changeOldMentions(vi.getName(), newInstanceName);
505+
expectedStatesDisjunction = expectedStatesDisjunction.changeOldMentions(vi.getName(), instanceName);
506506

507507
// combine messages of all state changes
508508
String message = stateChanges.stream().map(ObjectState::getMessage)
509509
.filter(msg -> msg != null && !msg.isBlank()).distinct().collect(Collectors.joining("\n"));
510-
Predicate foundState = prevState.substituteVariable(instanceName, newInstanceName);
511-
tc.throwStateRefinementError(invocation.getPosition(), foundState, expectedStatesDisjunction, message);
510+
tc.throwStateRefinementError(invocation.getPosition(), prevState, expectedStatesDisjunction, message);
512511
}
513512
}
514513

0 commit comments

Comments
 (0)