Skip to content

Commit 026a409

Browse files
authored
Fix VCImplication Ordering (#245)
1 parent 9b3276e commit 026a409

1 file changed

Lines changed: 15 additions & 14 deletions

File tree

  • liquidjava-verifier/src/main/java/liquidjava/processor/refinement_checker

liquidjava-verifier/src/main/java/liquidjava/processor/refinement_checker/VCChecker.java

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -252,20 +252,6 @@ private VCImplication joinPredicates(Predicate expectedType, List<RefinedVariabl
252252

253253
VCImplication firstSi = null;
254254
VCImplication lastSi = null;
255-
// Check
256-
for (RefinedVariable var : mainVars) { // join main refinements of mainVars
257-
addMap(var, map);
258-
VCImplication si = new VCImplication(var.getName(), var.getType(), var.getMainRefinement());
259-
if (lastSi != null) {
260-
lastSi.setNext(si);
261-
lastSi = si;
262-
}
263-
if (firstSi == null) {
264-
firstSi = si;
265-
lastSi = si;
266-
}
267-
}
268-
269255
for (RefinedVariable var : vars) { // join refinements of vars
270256
addMap(var, map);
271257

@@ -289,6 +275,19 @@ && hasDependencyCycle(lastInst.get(), var.getName(), vars, new HashSet<>()))
289275
lastSi = si;
290276
}
291277
}
278+
279+
for (RefinedVariable var : mainVars) { // join main refinements of mainVars
280+
addMap(var, map);
281+
VCImplication si = new VCImplication(var.getName(), var.getType(), var.getMainRefinement());
282+
if (lastSi != null) {
283+
lastSi.setNext(si);
284+
lastSi = si;
285+
}
286+
if (firstSi == null) {
287+
firstSi = si;
288+
lastSi = si;
289+
}
290+
}
292291
VCImplication cSMT = new VCImplication(new Predicate());
293292
if (firstSi != null) {
294293
cSMT = firstSi.clone();
@@ -331,6 +330,8 @@ private void getVariablesFromContext(List<String> lvars, List<RefinedVariable> a
331330
.filter(rv -> !allVars.contains(rv)).forEach(rv -> {
332331
allVars.add(rv);
333332
recAuxGetVars(rv, allVars);
333+
allVars.remove(rv);
334+
allVars.add(rv);
334335
});
335336
}
336337

0 commit comments

Comments
 (0)