Skip to content

Commit 642ba0e

Browse files
committed
Store Refined Variable Annotation Position
This is needed to use the annotation position to be able to suggested the variable we are refining in the autocomplete
1 parent e74d105 commit 642ba0e

File tree

3 files changed

+22
-10
lines changed

3 files changed

+22
-10
lines changed

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

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -105,31 +105,31 @@ public void addVarToContext(RefinedVariable var) {
105105
}
106106

107107
public RefinedVariable addVarToContext(String simpleName, CtTypeReference<?> type, Predicate c,
108-
CtElement placementInCode) {
108+
CtElement element) {
109109
RefinedVariable vi = new Variable(simpleName, type, c);
110-
vi.addPlacementInCode(PlacementInCode.createPlacement(placementInCode));
110+
vi.addPlacementInCode(element);
111111
vi.addSuperTypes(type.getSuperclass(), type.getSuperInterfaces());
112112
addVarToContext(vi);
113113
return vi;
114114
}
115115

116116
public RefinedVariable addInstanceToContext(String simpleName, CtTypeReference<?> type, Predicate c,
117-
CtElement placementInCode) {
117+
CtElement element) {
118118
RefinedVariable vi = new VariableInstance(simpleName, type, c);
119-
vi.addPlacementInCode(PlacementInCode.createPlacement(placementInCode));
119+
vi.addPlacementInCode(element);
120120
if (!ctxInstanceVars.contains(vi))
121121
addInstanceVariable(vi);
122122
return vi;
123123
}
124124

125125
public void addRefinementToVariableInContext(String name, CtTypeReference<?> type, Predicate et,
126-
CtElement placementInCode) {
126+
CtElement element) {
127127
if (hasVariable(name)) {
128128
RefinedVariable vi = getVariableByName(name);
129129
vi.setRefinement(et);
130-
vi.addPlacementInCode(PlacementInCode.createPlacement(placementInCode));
130+
vi.addPlacementInCode(element);
131131
} else {
132-
addVarToContext(name, type, et, placementInCode);
132+
addVarToContext(name, type, et, element);
133133
}
134134
}
135135

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
import liquidjava.utils.Utils;
99
import spoon.reflect.cu.SourcePosition;
1010
import spoon.reflect.declaration.CtElement;
11-
import spoon.reflect.declaration.CtExecutable;
1211
import spoon.reflect.declaration.CtParameter;
1312

1413
public class ContextHistory {

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

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,16 @@
44
import java.util.List;
55
import java.util.Set;
66
import liquidjava.rj_language.Predicate;
7+
import liquidjava.utils.Utils;
8+
import spoon.reflect.cu.SourcePosition;
9+
import spoon.reflect.declaration.CtElement;
710
import spoon.reflect.reference.CtTypeReference;
811

912
public abstract class RefinedVariable extends Refined {
1013
private final List<CtTypeReference<?>> supertypes;
1114
private PlacementInCode placementInCode;
1215
private boolean isParameter;
16+
private SourcePosition annPosition;
1317

1418
public RefinedVariable(String name, CtTypeReference<?> type, Predicate c) {
1519
super(name, type, c);
@@ -36,14 +40,23 @@ public void addSuperTypes(CtTypeReference<?> ts, Set<CtTypeReference<?>> sts) {
3640
supertypes.add(ct);
3741
}
3842

39-
public void addPlacementInCode(PlacementInCode s) {
40-
placementInCode = s;
43+
public void addPlacementInCode(CtElement element) {
44+
placementInCode = PlacementInCode.createPlacement(element);
45+
annPosition = Utils.getFirstAnnotationPosition(element);
46+
}
47+
48+
public void addPlacementInCode(PlacementInCode placement) {
49+
placementInCode = placement;
4150
}
4251

4352
public PlacementInCode getPlacementInCode() {
4453
return placementInCode;
4554
}
4655

56+
public SourcePosition getAnnPosition() {
57+
return annPosition;
58+
}
59+
4760
@Override
4861
public int hashCode() {
4962
final int prime = 31;

0 commit comments

Comments
 (0)