From 6a517c60f9de9907d040d6a18972a1dcd1653aa1 Mon Sep 17 00:00:00 2001 From: NebelNidas Date: Mon, 8 Apr 2024 14:53:24 +0200 Subject: Invert Mapping-IO Proguard mappings to mirror legacy behavior (#542) * Invert Proguard data read from / written by Mapping-IO to mirror legacy behavior * Fix code style--- .../translation/mapping/serde/MappingFormat.java | 23 +++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/MappingFormat.java b/enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/MappingFormat.java index aeac9db..56b36e0 100644 --- a/enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/MappingFormat.java +++ b/enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/MappingFormat.java @@ -19,6 +19,7 @@ import cuchaz.enigma.ProgressListener; import cuchaz.enigma.analysis.index.JarIndex; import cuchaz.enigma.translation.mapping.EntryMapping; import cuchaz.enigma.translation.mapping.MappingDelta; +import cuchaz.enigma.translation.mapping.MappingOperations; import cuchaz.enigma.translation.mapping.serde.enigma.EnigmaMappingsReader; import cuchaz.enigma.translation.mapping.serde.enigma.EnigmaMappingsWriter; import cuchaz.enigma.translation.mapping.serde.proguard.ProguardMappingsReader; @@ -77,6 +78,10 @@ public enum MappingFormat { } try { + if (this == PROGUARD) { + mappings = MappingOperations.invert(mappings); + } + VisitableMappingTree tree = MappingIoConverter.toMappingIo(mappings, progressListener); progressListener.init(1, I18n.translate("progress.mappings.writing")); progressListener.step(1, null); // Reset message @@ -115,15 +120,31 @@ public enum MappingFormat { VisitableMappingTree mappingTree = new MemoryMappingTree(); MappingReader.read(path, mappingIoCounterpart, mappingTree); - return MappingIoConverter.fromMappingIo(mappingTree, progressListener, index); + EntryTree mappings = MappingIoConverter.fromMappingIo(mappingTree, progressListener, index); + + return this == PROGUARD ? MappingOperations.invert(mappings) : mappings; } + /** + * @return Enigma's native writer for the format, or {@code null} if none exists. + * + * @deprecated Use {@link #isWritable()} and {@link #write(EntryTree, Path, ProgressListener, MappingSaveParameters)} instead, + * which take the new Mapping-IO equivalents (and eventual replacements) into account. + */ @Nullable + @Deprecated public MappingsWriter getWriter() { return writer; } + /** + * @return Enigma's native reader for the format, or {@code null} if none exists. + * + * @deprecated Use {@link #isReadable()} and {@link #read(Path, ProgressListener, MappingSaveParameters, JarIndex)} instead, + * which take the new Mapping-IO equivalents (and eventual replacements) into account. + */ @Nullable + @Deprecated public MappingsReader getReader() { return reader; } -- cgit v1.2.3