Better annotation processor IC

This commit is contained in:
Anuken 2022-03-27 12:53:38 -04:00
parent 02f3386c5b
commit 0e2a5cddfd
6 changed files with 16 additions and 7 deletions

View file

@ -123,9 +123,15 @@ public abstract class BaseProcessor extends AbstractProcessor{
}
public static void write(TypeSpec.Builder builder, Seq<String> imports) throws Exception{
builder.superinterfaces.sort(Structs.comparing(t -> t.toString()));
builder.methodSpecs.sort(Structs.comparing(m -> m.toString()));
builder.fieldSpecs.sort(Structs.comparing(f -> f.name));
JavaFile file = JavaFile.builder(packageName, builder.build()).skipJavaLangImports(true).build();
if(imports != null){
imports = imports.map(m -> Seq.with(m.split("\n")).sort().toString("\n"));
imports.sort();
String rawSource = file.toString();
Seq<String> result = new Seq<>();
for(String s : rawSource.split("\n", -1)){

View file

@ -409,7 +409,7 @@ public class EntityProcess extends BaseProcessor{
err("Type " + type + " has multiple components implementing non-void method " + entry.key + ".");
}
entry.value.sort(Structs.comps(Structs.comparingFloat(m -> m.has(MethodPriority.class) ? m.annotation(MethodPriority.class).value() : 0), Structs.comparing(Selement::name)));
entry.value.sort(Structs.comps(Structs.comparingFloat(m -> m.has(MethodPriority.class) ? m.annotation(MethodPriority.class).value() : 0), Structs.comparing(s -> s.up().getSimpleName().toString())));
//representative method
Smethod first = entry.value.first();
@ -545,6 +545,7 @@ public class EntityProcess extends BaseProcessor{
builder.addSuperinterface(Poolable.class);
//implement reset()
MethodSpec.Builder resetBuilder = MethodSpec.methodBuilder("reset").addModifiers(Modifier.PUBLIC);
allFieldSpecs.sortComparing(s -> s.name);
for(FieldSpec spec : allFieldSpecs){
@Nullable Svar variable = specVariables.get(spec);
if(variable != null && variable.isAny(Modifier.STATIC, Modifier.FINAL)) continue;