From 23d7b2277aa3d82e3f2c7a9aa3fa385caddba54b Mon Sep 17 00:00:00 2001 From: Julian Burner Date: Wed, 7 Dec 2022 20:03:10 +0100 Subject: Don't save empty classes (#474) Co-authored-by: ByMartrixx --- .../mapping/serde/enigma/EnigmaMappingsWriter.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'enigma') 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 cd00ef7..df1af91 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 @@ -26,6 +26,7 @@ import java.util.Collection; import java.util.Collections; import java.util.Objects; import java.util.concurrent.atomic.AtomicInteger; +import java.util.stream.Collectors; import java.util.stream.Stream; import javax.annotation.Nonnull; @@ -78,6 +79,8 @@ public enum EnigmaMappingsWriter implements MappingsWriter { applyDeletions(path, changedClasses, mappings, delta.getBaseMappings(), saveParameters.getFileNameFormat()); + changedClasses = changedClasses.stream().filter(entry -> !isClassEmpty(mappings, entry)).collect(Collectors.toList()); + progress.init(changedClasses.size(), I18n.translate("progress.mappings.enigma_directory.writing")); AtomicInteger steps = new AtomicInteger(); @@ -313,4 +316,15 @@ public enum EnigmaMappingsWriter implements MappingsWriter { builder.append(line.trim()); return builder.toString(); } + + protected boolean isClassEmpty(EntryTree mappings, ClassEntry classEntry) { + Collection> children = groupChildren(mappings.getChildren(classEntry)); + + EntryMapping classEntryMapping = mappings.get(classEntry); + return children.isEmpty() && (classEntryMapping == null || isMappingEmpty(classEntryMapping)); + } + + private boolean isMappingEmpty(EntryMapping mapping) { + return mapping.targetName() == null && mapping.accessModifier() == AccessModifier.UNCHANGED && mapping.javadoc() == null; + } } -- cgit v1.2.3