From a8327b4f79fbfabb27a71b654fb357395ac0190a Mon Sep 17 00:00:00 2001 From: modmuss50 Date: Wed, 13 May 2020 17:41:48 +0100 Subject: A quick and dirty workaround for not being able to add javadoc to methods or fields without a mapping (mainly none obf names) (#240) --- .../java/cuchaz/enigma/translation/mapping/MappingPair.java | 6 +++++- .../enigma/translation/mapping/serde/EnigmaMappingsReader.java | 10 +++++++--- .../enigma/translation/mapping/serde/EnigmaMappingsWriter.java | 8 ++++++-- 3 files changed, 18 insertions(+), 6 deletions(-) diff --git a/src/main/java/cuchaz/enigma/translation/mapping/MappingPair.java b/src/main/java/cuchaz/enigma/translation/mapping/MappingPair.java index 9ed7e8a..5d39e3d 100644 --- a/src/main/java/cuchaz/enigma/translation/mapping/MappingPair.java +++ b/src/main/java/cuchaz/enigma/translation/mapping/MappingPair.java @@ -6,7 +6,7 @@ import javax.annotation.Nullable; public class MappingPair, M> { private final E entry; - private final M mapping; + private M mapping; public MappingPair(E entry, @Nullable M mapping) { this.entry = entry; @@ -25,4 +25,8 @@ public class MappingPair, M> { public M getMapping() { return mapping; } + + public void setMapping(M mapping) { + this.mapping = mapping; + } } diff --git a/src/main/java/cuchaz/enigma/translation/mapping/serde/EnigmaMappingsReader.java b/src/main/java/cuchaz/enigma/translation/mapping/serde/EnigmaMappingsReader.java index a1d5e01..53bbaa3 100644 --- a/src/main/java/cuchaz/enigma/translation/mapping/serde/EnigmaMappingsReader.java +++ b/src/main/java/cuchaz/enigma/translation/mapping/serde/EnigmaMappingsReader.java @@ -179,8 +179,9 @@ public enum EnigmaMappingsReader implements MappingsReader { throw new IllegalStateException("Javadoc has no parent!"); // Empty string to concat String jdLine = tokens.length > 1 ? String.join(" ", Arrays.copyOfRange(tokens,1,tokens.length)) : ""; - if (parent.getMapping() == null) - throw new IllegalStateException("Javadoc requires a mapping!"); + if (parent.getMapping() == null) { + parent.setMapping(new RawEntryMapping(parent.getEntry().getName(), AccessModifier.UNCHANGED)); + } parent.getMapping().addJavadocLine(MappingHelper.unescape(jdLine)); } @@ -228,7 +229,10 @@ public enum EnigmaMappingsReader implements MappingsReader { AccessModifier modifier = AccessModifier.UNCHANGED; TypeDescriptor descriptor; - if (tokens.length == 4) { + if (tokens.length == 3) { + mapping = tokens[1]; + descriptor = new TypeDescriptor(tokens[2]); + } else if (tokens.length == 4) { AccessModifier parsedModifier = parseModifier(tokens[3]); if (parsedModifier != null) { descriptor = new TypeDescriptor(tokens[2]); diff --git a/src/main/java/cuchaz/enigma/translation/mapping/serde/EnigmaMappingsWriter.java b/src/main/java/cuchaz/enigma/translation/mapping/serde/EnigmaMappingsWriter.java index 2f6c7bc..be0fceb 100644 --- a/src/main/java/cuchaz/enigma/translation/mapping/serde/EnigmaMappingsWriter.java +++ b/src/main/java/cuchaz/enigma/translation/mapping/serde/EnigmaMappingsWriter.java @@ -271,7 +271,9 @@ public enum EnigmaMappingsWriter implements MappingsWriter { protected String writeMethod(MethodEntry entry, EntryMapping mapping) { StringBuilder builder = new StringBuilder(EnigmaFormat.METHOD + " "); builder.append(entry.getName()).append(' '); - writeMapping(builder, mapping); + if (mapping != null && !mapping.getTargetName().equals(entry.getName())) { + writeMapping(builder, mapping); + } builder.append(entry.getDesc().toString()); @@ -281,7 +283,9 @@ public enum EnigmaMappingsWriter implements MappingsWriter { protected String writeField(FieldEntry entry, EntryMapping mapping) { StringBuilder builder = new StringBuilder(EnigmaFormat.FIELD + " "); builder.append(entry.getName()).append(' '); - writeMapping(builder, mapping); + if (mapping != null && !mapping.getTargetName().equals(entry.getName())) { + writeMapping(builder, mapping); + } builder.append(entry.getDesc().toString()); -- cgit v1.2.3