From a9e03fa0e75b5b338021de982acbbb8277e08706 Mon Sep 17 00:00:00 2001 From: Fudge Date: Mon, 2 Dec 2019 15:43:23 +0200 Subject: Allow attaching class, method, field, and parameter javadocs (#185) * bring liach pr to modern enigma * bump version * fuck off vscode * switch to COMMENT and write comments before * it was already after, what do you want * oops * put inner classes at the end * remove indents and use all caps * add refreshmappings command * Update src/main/java/cuchaz/enigma/translation/mapping/serde/EnigmaMappingsWriter.java * Delete RefreshEnigmaMappingsCommand.java * Update CommandMain.java * ok --- .../translation/representation/entry/ClassDefEntry.java | 16 +++++++++++----- .../translation/representation/entry/ClassEntry.java | 15 ++++++++++----- .../enigma/translation/representation/entry/Entry.java | 2 ++ .../translation/representation/entry/FieldDefEntry.java | 17 +++++++++++------ .../translation/representation/entry/FieldEntry.java | 15 ++++++++++----- .../representation/entry/LocalVariableDefEntry.java | 11 ++++++----- .../representation/entry/LocalVariableEntry.java | 11 ++++++----- .../representation/entry/MethodDefEntry.java | 17 +++++++++++------ .../translation/representation/entry/MethodEntry.java | 15 ++++++++++----- .../translation/representation/entry/ParentedEntry.java | 10 +++++++++- 10 files changed, 86 insertions(+), 43 deletions(-) (limited to 'src/main/java/cuchaz/enigma/translation/representation') diff --git a/src/main/java/cuchaz/enigma/translation/representation/entry/ClassDefEntry.java b/src/main/java/cuchaz/enigma/translation/representation/entry/ClassDefEntry.java index c4df891..4b245bc 100644 --- a/src/main/java/cuchaz/enigma/translation/representation/entry/ClassDefEntry.java +++ b/src/main/java/cuchaz/enigma/translation/representation/entry/ClassDefEntry.java @@ -28,11 +28,16 @@ public class ClassDefEntry extends ClassEntry implements DefEntry { private final ClassEntry[] interfaces; public ClassDefEntry(String className, Signature signature, AccessFlags access, @Nullable ClassEntry superClass, ClassEntry[] interfaces) { - this(getOuterClass(className), getInnerName(className), signature, access, superClass, interfaces); + this(getOuterClass(className), getInnerName(className), signature, access, superClass, interfaces, null); } public ClassDefEntry(ClassEntry parent, String className, Signature signature, AccessFlags access, @Nullable ClassEntry superClass, ClassEntry[] interfaces) { - super(parent, className); + this(parent, className, signature, access, superClass, interfaces, null); + } + + public ClassDefEntry(ClassEntry parent, String className, Signature signature, AccessFlags access, @Nullable ClassEntry superClass, + ClassEntry[] interfaces, String javadocs) { + super(parent, className, javadocs); Preconditions.checkNotNull(signature, "Class signature cannot be null"); Preconditions.checkNotNull(access, "Class access cannot be null"); @@ -82,16 +87,17 @@ public class ClassDefEntry extends ClassEntry implements DefEntry { AccessFlags translatedAccess = mapping != null ? mapping.getAccessModifier().transform(access) : access; ClassEntry translatedSuper = translator.translate(superClass); ClassEntry[] translatedInterfaces = Arrays.stream(interfaces).map(translator::translate).toArray(ClassEntry[]::new); - return new ClassDefEntry(parent, translatedName, translatedSignature, translatedAccess, translatedSuper, translatedInterfaces); + String docs = mapping != null ? mapping.getJavadoc() : null; + return new ClassDefEntry(parent, translatedName, translatedSignature, translatedAccess, translatedSuper, translatedInterfaces, docs); } @Override public ClassDefEntry withName(String name) { - return new ClassDefEntry(parent, name, signature, access, superClass, interfaces); + return new ClassDefEntry(parent, name, signature, access, superClass, interfaces, javadocs); } @Override public ClassDefEntry withParent(ClassEntry parent) { - return new ClassDefEntry(parent, name, signature, access, superClass, interfaces); + return new ClassDefEntry(parent, name, signature, access, superClass, interfaces, javadocs); } } diff --git a/src/main/java/cuchaz/enigma/translation/representation/entry/ClassEntry.java b/src/main/java/cuchaz/enigma/translation/representation/entry/ClassEntry.java index 6bf4f96..23ce4a2 100644 --- a/src/main/java/cuchaz/enigma/translation/representation/entry/ClassEntry.java +++ b/src/main/java/cuchaz/enigma/translation/representation/entry/ClassEntry.java @@ -27,11 +27,15 @@ public class ClassEntry extends ParentedEntry implements Comparable< private final String fullName; public ClassEntry(String className) { - this(getOuterClass(className), getInnerName(className)); + this(getOuterClass(className), getInnerName(className), null); } public ClassEntry(@Nullable ClassEntry parent, String className) { - super(parent, className); + this(parent, className, null); + } + + public ClassEntry(@Nullable ClassEntry parent, String className, @Nullable String javadocs) { + super(parent, className, javadocs); if (parent != null) { fullName = parent.getFullName() + "$" + name; } else { @@ -69,7 +73,8 @@ public class ClassEntry extends ParentedEntry implements Comparable< } String translatedName = mapping != null ? mapping.getTargetName() : name; - return new ClassEntry(parent, translatedName); + String docs = mapping != null ? mapping.getJavadoc() : null; + return new ClassEntry(parent, translatedName, docs); } @Override @@ -103,12 +108,12 @@ public class ClassEntry extends ParentedEntry implements Comparable< @Override public ClassEntry withName(String name) { - return new ClassEntry(parent, name); + return new ClassEntry(parent, name, javadocs); } @Override public ClassEntry withParent(ClassEntry parent) { - return new ClassEntry(parent, name); + return new ClassEntry(parent, name, javadocs); } @Override diff --git a/src/main/java/cuchaz/enigma/translation/representation/entry/Entry.java b/src/main/java/cuchaz/enigma/translation/representation/entry/Entry.java index 29a55d8..72b0391 100644 --- a/src/main/java/cuchaz/enigma/translation/representation/entry/Entry.java +++ b/src/main/java/cuchaz/enigma/translation/representation/entry/Entry.java @@ -22,6 +22,8 @@ import java.util.List; public interface Entry

> extends Translatable { String getName(); + String getJavadocs(); + default String getSourceRemapName() { return getName(); } diff --git a/src/main/java/cuchaz/enigma/translation/representation/entry/FieldDefEntry.java b/src/main/java/cuchaz/enigma/translation/representation/entry/FieldDefEntry.java index 74176fd..46c0b00 100644 --- a/src/main/java/cuchaz/enigma/translation/representation/entry/FieldDefEntry.java +++ b/src/main/java/cuchaz/enigma/translation/representation/entry/FieldDefEntry.java @@ -26,7 +26,11 @@ public class FieldDefEntry extends FieldEntry implements DefEntry { private final Signature signature; public FieldDefEntry(ClassEntry owner, String name, TypeDescriptor desc, Signature signature, AccessFlags access) { - super(owner, name, desc); + this(owner, name, desc, signature, access, null); + } + + public FieldDefEntry(ClassEntry owner, String name, TypeDescriptor desc, Signature signature, AccessFlags access, String javadocs) { + super(owner, name, desc, javadocs); Preconditions.checkNotNull(access, "Field access cannot be null"); Preconditions.checkNotNull(signature, "Field signature cannot be null"); this.access = access; @@ -34,7 +38,7 @@ public class FieldDefEntry extends FieldEntry implements DefEntry { } public static FieldDefEntry parse(ClassEntry owner, int access, String name, String desc, String signature) { - return new FieldDefEntry(owner, name, new TypeDescriptor(desc), Signature.createTypedSignature(signature), new AccessFlags(access)); + return new FieldDefEntry(owner, name, new TypeDescriptor(desc), Signature.createTypedSignature(signature), new AccessFlags(access), null); } public static FieldDefEntry parse(FieldDefinition definition) { @@ -42,7 +46,7 @@ public class FieldDefEntry extends FieldEntry implements DefEntry { TypeDescriptor descriptor = new TypeDescriptor(definition.getErasedSignature()); Signature signature = Signature.createTypedSignature(definition.getSignature()); AccessFlags access = new AccessFlags(definition.getModifiers()); - return new FieldDefEntry(owner, definition.getName(), descriptor, signature, access); + return new FieldDefEntry(owner, definition.getName(), descriptor, signature, access, null); } @Override @@ -60,16 +64,17 @@ public class FieldDefEntry extends FieldEntry implements DefEntry { Signature translatedSignature = translator.translate(signature); String translatedName = mapping != null ? mapping.getTargetName() : name; AccessFlags translatedAccess = mapping != null ? mapping.getAccessModifier().transform(access) : access; - return new FieldDefEntry(parent, translatedName, translatedDesc, translatedSignature, translatedAccess); + String docs = mapping != null ? mapping.getJavadoc() : null; + return new FieldDefEntry(parent, translatedName, translatedDesc, translatedSignature, translatedAccess, docs); } @Override public FieldDefEntry withName(String name) { - return new FieldDefEntry(parent, name, desc, signature, access); + return new FieldDefEntry(parent, name, desc, signature, access, javadocs); } @Override public FieldDefEntry withParent(ClassEntry owner) { - return new FieldDefEntry(owner, this.name, this.desc, signature, access); + return new FieldDefEntry(owner, this.name, this.desc, signature, access, javadocs); } } diff --git a/src/main/java/cuchaz/enigma/translation/representation/entry/FieldEntry.java b/src/main/java/cuchaz/enigma/translation/representation/entry/FieldEntry.java index 700512e..bef0edf 100644 --- a/src/main/java/cuchaz/enigma/translation/representation/entry/FieldEntry.java +++ b/src/main/java/cuchaz/enigma/translation/representation/entry/FieldEntry.java @@ -23,7 +23,11 @@ public class FieldEntry extends ParentedEntry implements Comparable< protected final TypeDescriptor desc; public FieldEntry(ClassEntry parent, String name, TypeDescriptor desc) { - super(parent, name); + this(parent, name, desc, null); + } + + public FieldEntry(ClassEntry parent, String name, TypeDescriptor desc, String javadocs) { + super(parent, name, javadocs); Preconditions.checkNotNull(parent, "Owner cannot be null"); Preconditions.checkNotNull(desc, "Field descriptor cannot be null"); @@ -32,7 +36,7 @@ public class FieldEntry extends ParentedEntry implements Comparable< } public static FieldEntry parse(String owner, String name, String desc) { - return new FieldEntry(new ClassEntry(owner), name, new TypeDescriptor(desc)); + return new FieldEntry(new ClassEntry(owner), name, new TypeDescriptor(desc), null); } @Override @@ -46,18 +50,19 @@ public class FieldEntry extends ParentedEntry implements Comparable< @Override public FieldEntry withName(String name) { - return new FieldEntry(parent, name, desc); + return new FieldEntry(parent, name, desc, null); } @Override public FieldEntry withParent(ClassEntry parent) { - return new FieldEntry(parent, this.name, this.desc); + return new FieldEntry(parent, this.name, this.desc, null); } @Override protected FieldEntry translate(Translator translator, @Nullable EntryMapping mapping) { String translatedName = mapping != null ? mapping.getTargetName() : name; - return new FieldEntry(parent, translatedName, translator.translate(desc)); + String docs = mapping != null ? mapping.getJavadoc() : null; + return new FieldEntry(parent, translatedName, translator.translate(desc), docs); } @Override diff --git a/src/main/java/cuchaz/enigma/translation/representation/entry/LocalVariableDefEntry.java b/src/main/java/cuchaz/enigma/translation/representation/entry/LocalVariableDefEntry.java index c6f32b6..aad4236 100644 --- a/src/main/java/cuchaz/enigma/translation/representation/entry/LocalVariableDefEntry.java +++ b/src/main/java/cuchaz/enigma/translation/representation/entry/LocalVariableDefEntry.java @@ -15,8 +15,8 @@ import javax.annotation.Nullable; public class LocalVariableDefEntry extends LocalVariableEntry { protected final TypeDescriptor desc; - public LocalVariableDefEntry(MethodEntry ownerEntry, int index, String name, boolean parameter, TypeDescriptor desc) { - super(ownerEntry, index, name, parameter); + public LocalVariableDefEntry(MethodEntry ownerEntry, int index, String name, boolean parameter, TypeDescriptor desc, String javadoc) { + super(ownerEntry, index, name, parameter, javadoc); Preconditions.checkNotNull(desc, "Variable desc cannot be null"); this.desc = desc; @@ -30,17 +30,18 @@ public class LocalVariableDefEntry extends LocalVariableEntry { public LocalVariableDefEntry translate(Translator translator, @Nullable EntryMapping mapping) { TypeDescriptor translatedDesc = translator.translate(desc); String translatedName = mapping != null ? mapping.getTargetName() : name; - return new LocalVariableDefEntry(parent, index, translatedName, parameter, translatedDesc); + String javadoc = mapping != null ? mapping.getJavadoc() : javadocs; + return new LocalVariableDefEntry(parent, index, translatedName, parameter, translatedDesc, javadoc); } @Override public LocalVariableDefEntry withName(String name) { - return new LocalVariableDefEntry(parent, index, name, parameter, desc); + return new LocalVariableDefEntry(parent, index, name, parameter, desc, javadocs); } @Override public LocalVariableDefEntry withParent(MethodEntry entry) { - return new LocalVariableDefEntry(entry, index, name, parameter, desc); + return new LocalVariableDefEntry(entry, index, name, parameter, desc, javadocs); } @Override diff --git a/src/main/java/cuchaz/enigma/translation/representation/entry/LocalVariableEntry.java b/src/main/java/cuchaz/enigma/translation/representation/entry/LocalVariableEntry.java index 6fdb79f..3ccb1fa 100644 --- a/src/main/java/cuchaz/enigma/translation/representation/entry/LocalVariableEntry.java +++ b/src/main/java/cuchaz/enigma/translation/representation/entry/LocalVariableEntry.java @@ -17,8 +17,8 @@ public class LocalVariableEntry extends ParentedEntry implements Co protected final int index; protected final boolean parameter; - public LocalVariableEntry(MethodEntry parent, int index, String name, boolean parameter) { - super(parent, name); + public LocalVariableEntry(MethodEntry parent, int index, String name, boolean parameter, String javadoc) { + super(parent, name, javadoc); Preconditions.checkNotNull(parent, "Variable owner cannot be null"); Preconditions.checkArgument(index >= 0, "Index must be positive"); @@ -48,17 +48,18 @@ public class LocalVariableEntry extends ParentedEntry implements Co @Override public LocalVariableEntry translate(Translator translator, @Nullable EntryMapping mapping) { String translatedName = mapping != null ? mapping.getTargetName() : name; - return new LocalVariableEntry(parent, index, translatedName, parameter); + String javadoc = mapping != null ? mapping.getJavadoc() : null; + return new LocalVariableEntry(parent, index, translatedName, parameter, javadoc); } @Override public LocalVariableEntry withName(String name) { - return new LocalVariableEntry(parent, index, name, parameter); + return new LocalVariableEntry(parent, index, name, parameter, javadocs); } @Override public LocalVariableEntry withParent(MethodEntry parent) { - return new LocalVariableEntry(parent, index, name, parameter); + return new LocalVariableEntry(parent, index, name, parameter, javadocs); } @Override diff --git a/src/main/java/cuchaz/enigma/translation/representation/entry/MethodDefEntry.java b/src/main/java/cuchaz/enigma/translation/representation/entry/MethodDefEntry.java index 7e89f6a..280b605 100644 --- a/src/main/java/cuchaz/enigma/translation/representation/entry/MethodDefEntry.java +++ b/src/main/java/cuchaz/enigma/translation/representation/entry/MethodDefEntry.java @@ -26,7 +26,11 @@ public class MethodDefEntry extends MethodEntry implements DefEntry private final Signature signature; public MethodDefEntry(ClassEntry owner, String name, MethodDescriptor descriptor, Signature signature, AccessFlags access) { - super(owner, name, descriptor); + this(owner, name, descriptor, signature, access, null); + } + + public MethodDefEntry(ClassEntry owner, String name, MethodDescriptor descriptor, Signature signature, AccessFlags access, String docs) { + super(owner, name, descriptor, docs); Preconditions.checkNotNull(access, "Method access cannot be null"); Preconditions.checkNotNull(signature, "Method signature cannot be null"); this.access = access; @@ -34,7 +38,7 @@ public class MethodDefEntry extends MethodEntry implements DefEntry } public static MethodDefEntry parse(ClassEntry owner, int access, String name, String desc, String signature) { - return new MethodDefEntry(owner, name, new MethodDescriptor(desc), Signature.createSignature(signature), new AccessFlags(access)); + return new MethodDefEntry(owner, name, new MethodDescriptor(desc), Signature.createSignature(signature), new AccessFlags(access), null); } public static MethodDefEntry parse(MethodDefinition definition) { @@ -42,7 +46,7 @@ public class MethodDefEntry extends MethodEntry implements DefEntry MethodDescriptor descriptor = new MethodDescriptor(definition.getErasedSignature()); Signature signature = Signature.createSignature(definition.getSignature()); AccessFlags access = new AccessFlags(definition.getModifiers()); - return new MethodDefEntry(classEntry, definition.getName(), descriptor, signature, access); + return new MethodDefEntry(classEntry, definition.getName(), descriptor, signature, access, null); } @Override @@ -60,16 +64,17 @@ public class MethodDefEntry extends MethodEntry implements DefEntry Signature translatedSignature = translator.translate(signature); String translatedName = mapping != null ? mapping.getTargetName() : name; AccessFlags translatedAccess = mapping != null ? mapping.getAccessModifier().transform(access) : access; - return new MethodDefEntry(parent, translatedName, translatedDesc, translatedSignature, translatedAccess); + String docs = mapping != null ? mapping.getJavadoc() : null; + return new MethodDefEntry(parent, translatedName, translatedDesc, translatedSignature, translatedAccess, docs); } @Override public MethodDefEntry withName(String name) { - return new MethodDefEntry(parent, name, descriptor, signature, access); + return new MethodDefEntry(parent, name, descriptor, signature, access, javadocs); } @Override public MethodDefEntry withParent(ClassEntry parent) { - return new MethodDefEntry(new ClassEntry(parent.getFullName()), name, descriptor, signature, access); + return new MethodDefEntry(new ClassEntry(parent.getFullName()), name, descriptor, signature, access, javadocs); } } diff --git a/src/main/java/cuchaz/enigma/translation/representation/entry/MethodEntry.java b/src/main/java/cuchaz/enigma/translation/representation/entry/MethodEntry.java index f5d5c74..e1ffad3 100644 --- a/src/main/java/cuchaz/enigma/translation/representation/entry/MethodEntry.java +++ b/src/main/java/cuchaz/enigma/translation/representation/entry/MethodEntry.java @@ -24,7 +24,11 @@ public class MethodEntry extends ParentedEntry implements Comparable protected final MethodDescriptor descriptor; public MethodEntry(ClassEntry parent, String name, MethodDescriptor descriptor) { - super(parent, name); + this(parent, name, descriptor, null); + } + + public MethodEntry(ClassEntry parent, String name, MethodDescriptor descriptor, String javadocs) { + super(parent, name, javadocs); Preconditions.checkNotNull(parent, "Parent cannot be null"); Preconditions.checkNotNull(descriptor, "Method descriptor cannot be null"); @@ -33,7 +37,7 @@ public class MethodEntry extends ParentedEntry implements Comparable } public static MethodEntry parse(String owner, String name, String desc) { - return new MethodEntry(new ClassEntry(owner), name, new MethodDescriptor(desc)); + return new MethodEntry(new ClassEntry(owner), name, new MethodDescriptor(desc), null); } @Override @@ -52,17 +56,18 @@ public class MethodEntry extends ParentedEntry implements Comparable @Override public MethodEntry translate(Translator translator, @Nullable EntryMapping mapping) { String translatedName = mapping != null ? mapping.getTargetName() : name; - return new MethodEntry(parent, translatedName, translator.translate(descriptor)); + String docs = mapping != null ? mapping.getJavadoc() : null; + return new MethodEntry(parent, translatedName, translator.translate(descriptor), docs); } @Override public MethodEntry withName(String name) { - return new MethodEntry(parent, name, descriptor); + return new MethodEntry(parent, name, descriptor, javadocs); } @Override public MethodEntry withParent(ClassEntry parent) { - return new MethodEntry(new ClassEntry(parent.getFullName()), name, descriptor); + return new MethodEntry(new ClassEntry(parent.getFullName()), name, descriptor, javadocs); } @Override diff --git a/src/main/java/cuchaz/enigma/translation/representation/entry/ParentedEntry.java b/src/main/java/cuchaz/enigma/translation/representation/entry/ParentedEntry.java index b753d3a..cbc5faf 100644 --- a/src/main/java/cuchaz/enigma/translation/representation/entry/ParentedEntry.java +++ b/src/main/java/cuchaz/enigma/translation/representation/entry/ParentedEntry.java @@ -24,10 +24,12 @@ import javax.annotation.Nullable; public abstract class ParentedEntry

> implements Entry

{ protected final P parent; protected final String name; + protected final @Nullable String javadocs; - protected ParentedEntry(P parent, String name) { + protected ParentedEntry(P parent, String name, String javadocs) { this.parent = parent; this.name = name; + this.javadocs = javadocs; Preconditions.checkNotNull(name, "Name cannot be null"); } @@ -51,6 +53,12 @@ public abstract class ParentedEntry

> implements Entry

{ return parent; } + @Nullable + @Override + public String getJavadocs() { + return javadocs; + } + @Override public ParentedEntry

translate(Translator translator, EntryResolver resolver, EntryMap mappings) { P parent = getParent(); -- cgit v1.2.3