diff --git a/annotations/src/main/java/mindustry/annotations/util/AnnotationProxyMaker.java b/annotations/src/main/java/mindustry/annotations/util/AnnotationProxyMaker.java index c3398f3ae8..64d86a4346 100644 --- a/annotations/src/main/java/mindustry/annotations/util/AnnotationProxyMaker.java +++ b/annotations/src/main/java/mindustry/annotations/util/AnnotationProxyMaker.java @@ -7,6 +7,7 @@ import com.sun.tools.javac.code.Attribute.Enum; import com.sun.tools.javac.code.Attribute.Error; import com.sun.tools.javac.code.Attribute.Visitor; import com.sun.tools.javac.code.Attribute.*; +import com.sun.tools.javac.code.Scope.*; import com.sun.tools.javac.code.Type; import com.sun.tools.javac.code.Symbol.*; import com.sun.tools.javac.code.Type.ArrayType; @@ -64,36 +65,13 @@ public class AnnotationProxyMaker{ LinkedHashMap map = new LinkedHashMap(); ClassSymbol cl = (ClassSymbol)this.anno.type.tsym; - //try to use Java 8 API for this if possible - try{ - Class entryClass = Class.forName("com.sun.tools.javac.code.Scope$Entry"); - Object members = cl.members(); - Field field = members.getClass().getField("elems"); - Object elems = field.get(members); - Field siblingField = entryClass.getField("sibling"); - Field symField = entryClass.getField("sym"); - for(Object currEntry = elems; currEntry != null; currEntry = siblingField.get(currEntry)){ - handleSymbol((Symbol)symField.get(currEntry), map); - } - - }catch(Throwable e){ - //otherwise try other API - - try{ - Class lookupClass = Class.forName("com.sun.tools.javac.code.Scope$LookupKind"); - Field nonRecField = lookupClass.getField("NON_RECURSIVE"); - Object nonRec = nonRecField.get(null); - Scope scope = cl.members(); - Method getSyms = scope.getClass().getMethod("getSymbols", lookupClass); - Iterable it = (Iterable)getSyms.invoke(scope, nonRec); - Iterator i = it.iterator(); - while(i.hasNext()){ - handleSymbol(i.next(), map); + for(Symbol s : cl.members().getSymbols(LookupKind.NON_RECURSIVE)){ + if(s.getKind() == ElementKind.METHOD){ + MethodSymbol var4 = (MethodSymbol)s; + Attribute var5 = var4.getDefaultValue(); + if(var5 != null){ + map.put(var4, var5); } - - }catch(Throwable death){ - //I tried - throw new RuntimeException(death); } } @@ -104,17 +82,6 @@ public class AnnotationProxyMaker{ return map; } - private void handleSymbol(Symbol sym, LinkedHashMap map){ - - if(sym.getKind() == ElementKind.METHOD){ - MethodSymbol var4 = (MethodSymbol)sym; - Attribute var5 = var4.getDefaultValue(); - if(var5 != null){ - map.put(var4, var5); - } - } - } - private Object generateValue(MethodSymbol var1, Attribute var2){ AnnotationProxyMaker.ValueVisitor var3 = new AnnotationProxyMaker.ValueVisitor(var1); return var3.getValue(var2); diff --git a/annotations/src/main/java/mindustry/annotations/util/Selement.java b/annotations/src/main/java/mindustry/annotations/util/Selement.java index ca7a9ce5ad..c416f83b0a 100644 --- a/annotations/src/main/java/mindustry/annotations/util/Selement.java +++ b/annotations/src/main/java/mindustry/annotations/util/Selement.java @@ -12,6 +12,10 @@ import java.lang.Class; import java.lang.annotation.*; import java.lang.reflect.*; +/** + * Wrapper over Element with added utility functions. + * I would have preferred to use extension methods for this, but Java doesn't have any. + * */ public class Selement{ public final T e; diff --git a/tools/src/mindustry/tools/Generators.java b/tools/src/mindustry/tools/Generators.java index 2c188946b3..c78e7dbb5f 100644 --- a/tools/src/mindustry/tools/Generators.java +++ b/tools/src/mindustry/tools/Generators.java @@ -598,7 +598,7 @@ public class Generators{ }); } - /** Generates a scorch pixmap based on parameters. Thread safe, unless multiple scorch generators are running in parallel. */ + /** Generates a scorch pixmap based on parameters. Thread safe. */ public static class ScorchGenerator{ public int size = 80, seed = 0, color = Color.whiteRgba; public double scale = 18, pow = 2, octaves = 4, pers = 0.4, add = 2, nscl = 4.5f;