Skip to content

Commit 74dfda1

Browse files
committed
Fix Instance Variables
1 parent 333d176 commit 74dfda1

2 files changed

Lines changed: 10 additions & 0 deletions

File tree

liquidjava-verifier/src/main/java/liquidjava/processor/context/Context.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,14 @@ public void clearInstanceVariables() {
4747
ctxInstanceVars = new ArrayList<>();
4848
}
4949

50+
public void restoreInstanceVariables() {
51+
for (RefinedVariable variable : getCtxVars()) {
52+
if (variable instanceof Variable) {
53+
((Variable) variable).getLastInstance().ifPresent(this::addInstanceVariable);
54+
}
55+
}
56+
}
57+
5058
public void reinitializeAllContext() {
5159
reinitializeContext();
5260
ctxFunctions = new ArrayList<>();

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,7 @@ public <A extends Annotation> void visitCtAnnotationType(CtAnnotationType<A> ann
107107
public <T> void visitCtConstructor(CtConstructor<T> constructor) {
108108
context.clearInstanceVariables();
109109
context.enterContext();
110+
context.restoreInstanceVariables();
110111
mfc.loadFunctionInfo(constructor);
111112
try {
112113
super.visitCtConstructor(constructor);
@@ -121,6 +122,7 @@ public <T> void visitCtConstructor(CtConstructor<T> constructor) {
121122
public <R> void visitCtMethod(CtMethod<R> method) {
122123
context.clearInstanceVariables();
123124
context.enterContext();
125+
context.restoreInstanceVariables();
124126
if (!method.getSignature().equals("main(java.lang.String[])")) {
125127
mfc.loadFunctionInfo(method);
126128
}

0 commit comments

Comments
 (0)