From 6661dbd70f59c35842d113a14de3c00acf43ef7c Mon Sep 17 00:00:00 2001 From: Xander Date: Tue, 14 Jul 2020 03:24:49 +0800 Subject: Mapping format fixes (#294) * add test to ensure mapping formats can read/write properly * fix not baking last entries in TinyV2 reader * fix broken filter in Enigma File writer * Fix Enigma Zip writer ZipFS exception on non-matching filesystems--- .../mapping/serde/enigma/EnigmaMappingsWriter.java | 6 +++--- .../mapping/serde/tinyv2/TinyV2Reader.java | 25 ++++++++++++++++------ 2 files changed, 21 insertions(+), 10 deletions(-) (limited to 'enigma/src/main/java') diff --git a/enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/enigma/EnigmaMappingsWriter.java b/enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/enigma/EnigmaMappingsWriter.java index 7570d4b..378ed98 100644 --- a/enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/enigma/EnigmaMappingsWriter.java +++ b/enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/enigma/EnigmaMappingsWriter.java @@ -55,8 +55,8 @@ public enum EnigmaMappingsWriter implements MappingsWriter { @Override public void write(EntryTree mappings, MappingDelta delta, Path path, ProgressListener progress, MappingSaveParameters saveParameters) { Collection classes = mappings.getRootNodes() - .filter(entry -> entry instanceof ClassEntry) - .map(entry -> (ClassEntry) entry) + .filter(entry -> entry.getEntry() instanceof ClassEntry) + .map(entry -> (ClassEntry) entry.getEntry()) .collect(Collectors.toList()); progress.init(classes.size(), I18n.translate("progress.mappings.enigma_file.writing")); @@ -148,7 +148,7 @@ public enum EnigmaMappingsWriter implements MappingsWriter { private void deleteDeadPackages(Path root, Path packagePath) throws IOException { for (int i = packagePath.getNameCount() - 1; i >= 0; i--) { Path subPath = packagePath.subpath(0, i + 1); - Path packagePart = root.resolve(subPath); + Path packagePart = root.resolve(subPath.toString()); if (isEmpty(packagePart)) { Files.deleteIfExists(packagePart); } diff --git a/enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/tinyv2/TinyV2Reader.java b/enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/tinyv2/TinyV2Reader.java index dc25569..dc3246d 100644 --- a/enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/tinyv2/TinyV2Reader.java +++ b/enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/tinyv2/TinyV2Reader.java @@ -71,13 +71,7 @@ public final class TinyV2Reader implements MappingsReader { for (int i = INDENT_CLEAR_START[indent]; i < STATE_SIZE; i++) { state.clear(i); if (holds[i] != null) { - RawEntryMapping mapping = holds[i].getMapping(); - if (mapping != null) { - EntryMapping baked = mapping.bake(); - if (baked != null) { - mappings.insert(holds[i].getEntry(), baked); - } - } + bakeHeld(mappings, holds[i]); holds[i] = null; } } @@ -187,9 +181,26 @@ public final class TinyV2Reader implements MappingsReader { } } + //bake any remainders + for (MappingPair, RawEntryMapping> hold : holds) { + if (hold != null) { + bakeHeld(mappings, hold); + } + } + return mappings; } + private static void bakeHeld(EntryTree mappings, MappingPair, RawEntryMapping> hold2) { + RawEntryMapping mapping = hold2.getMapping(); + if (mapping != null) { + EntryMapping baked = mapping.bake(); + if (baked != null) { + mappings.insert(hold2.getEntry(), baked); + } + } + } + private void unsupportKey(String[] parts) { throw new IllegalArgumentException("Unsupported key " + parts[0]); } -- cgit v1.2.3