Skip to content

Commit bb79cb3

Browse files
committed
Save Refined Function Placement
1 parent a52518d commit bb79cb3

2 files changed

Lines changed: 12 additions & 0 deletions

File tree

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

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ public class RefinedFunction extends Refined {
1212
private String targetClass;
1313
private List<ObjectState> stateChange;
1414
private String signature;
15+
private PlacementInCode placementInCode;
1516

1617
public RefinedFunction() {
1718
argRefinements = new ArrayList<>();
@@ -50,6 +51,14 @@ public String getSignature() {
5051
return signature;
5152
}
5253

54+
public void setPlacementInCode(CtElement element) {
55+
placementInCode = PlacementInCode.createPlacement(element);
56+
}
57+
58+
public PlacementInCode getPlacementInCode() {
59+
return placementInCode;
60+
}
61+
5362
public Predicate getRenamedRefinements(Context c, CtElement element) {
5463
return getRenamedRefinements(getAllRefinements(), c, element);
5564
}

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ public void getConstructorRefinements(CtConstructor<?> c) throws LJError {
4343
RefinedFunction f = new RefinedFunction();
4444
f.setName(c.getSimpleName());
4545
f.setType(c.getType());
46+
f.setPlacementInCode(c);
4647
handleFunctionRefinements(f, c, c.getParameters());
4748
f.setRefReturn(new Predicate());
4849
CtTypeReference<?> declaring = c.getDeclaringType() != null ? c.getDeclaringType().getReference() : null;
@@ -79,6 +80,7 @@ public <R> void getMethodRefinements(CtMethod<R> method) throws LJError {
7980
f.setName(method.getSimpleName().replaceAll("\\p{C}", "")); // remove any empty chars from string
8081
f.setType(method.getType());
8182
f.setRefReturn(new Predicate());
83+
f.setPlacementInCode(method);
8284

8385
CtClass<?> klass = null;
8486
if (method.getParent() instanceof CtClass) {
@@ -116,6 +118,7 @@ public <R> void getMethodRefinements(CtMethod<R> method, String prefix) throws L
116118
f.setName(functionName.replaceAll("\\p{C}", "")); // remove any empty chars from string
117119
f.setType(method.getType());
118120
f.setRefReturn(new Predicate());
121+
f.setPlacementInCode(method);
119122
f.setClass(prefix);
120123
f.setSignature(String.format("%s.%s", prefix, method.getSignature()));
121124
rtc.getContext().addFunctionToContext(f);

0 commit comments

Comments
 (0)