-
Notifications
You must be signed in to change notification settings - Fork 35
Expand file tree
/
Copy pathFieldGhostsGeneration.java
More file actions
46 lines (38 loc) · 1.43 KB
/
FieldGhostsGeneration.java
File metadata and controls
46 lines (38 loc) · 1.43 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
package liquidjava.processor.ann_generation;
import liquidjava.errors.ErrorEmitter;
import liquidjava.processor.context.Context;
import liquidjava.specification.Ghost;
import spoon.reflect.declaration.*;
import spoon.reflect.factory.Factory;
import spoon.reflect.reference.CtTypeReference;
import spoon.reflect.visitor.CtScanner;
public class FieldGhostsGeneration extends CtScanner {
Context context;
Factory factory;
ErrorEmitter errorEmitter;
public FieldGhostsGeneration(Context c, Factory fac, ErrorEmitter errorEmitter) {
this.context = c;
this.factory = fac;
this.errorEmitter = errorEmitter;
}
public Context getContext() {
return context;
}
public Factory getFactory() {
return factory;
}
@Override
public <T> void visitCtClass(CtClass<T> ctClass) {
if (errorEmitter.foundError()) {
return;
}
ctClass.getDeclaredFields().stream().filter(fld -> fld.getType().getQualifiedName().equals("int"))
.forEach(fld -> {
CtTypeReference<?> fld_type = fld.getType();
CtAnnotation<?> gen_ann = factory.createAnnotation(factory.createCtTypeReference(Ghost.class));
gen_ann.addValue("value", fld_type.getSimpleName() + " " + fld.getSimpleName());
ctClass.addAnnotation(gen_ann);
});
super.visitCtClass(ctClass);
}
}