diff options
author | shedaniel <daniel@shedaniel.me> | 2021-11-06 17:19:57 +0800 |
---|---|---|
committer | shedaniel <daniel@shedaniel.me> | 2021-11-06 17:19:57 +0800 |
commit | c412c1135474e7ec3db1ef8f9894113336b7c78f (patch) | |
tree | c664533cc80a73d93620476edc2f3528412aa2f9 /src/main/java/net/fabricmc/loom/decompilers | |
parent | a48989057d62dc573eb919d6cbbd1cabc471f5f1 (diff) | |
parent | cb5c009e1a8978f86e1ce0a0f872ddc20686ae6d (diff) | |
download | architectury-loom-c412c1135474e7ec3db1ef8f9894113336b7c78f.tar.gz architectury-loom-c412c1135474e7ec3db1ef8f9894113336b7c78f.tar.bz2 architectury-loom-c412c1135474e7ec3db1ef8f9894113336b7c78f.zip |
Merge remote-tracking branch 'FabricMC/dev/0.10' into dev/0.10.0
# Conflicts:
# src/main/java/net/fabricmc/loom/api/LoomGradleExtensionAPI.java
# src/main/java/net/fabricmc/loom/extension/MinecraftGradleExtension.java
Diffstat (limited to 'src/main/java/net/fabricmc/loom/decompilers')
3 files changed, 37 insertions, 13 deletions
diff --git a/src/main/java/net/fabricmc/loom/decompilers/cfr/CFRObfuscationMapping.java b/src/main/java/net/fabricmc/loom/decompilers/cfr/CFRObfuscationMapping.java index c8baa2a7..aae26019 100644 --- a/src/main/java/net/fabricmc/loom/decompilers/cfr/CFRObfuscationMapping.java +++ b/src/main/java/net/fabricmc/loom/decompilers/cfr/CFRObfuscationMapping.java @@ -30,6 +30,7 @@ import java.nio.file.Files; import java.nio.file.Path; import java.util.ArrayList; import java.util.Arrays; +import java.util.Collection; import java.util.LinkedList; import java.util.List; @@ -126,6 +127,10 @@ public class CFRObfuscationMapping extends NullMapping { } } + if (comment != null && !recordComponentDocs.isEmpty()) { + print(" * "); + } + for (String componentDoc : recordComponentDocs) { print(" * ").print(componentDoc).newln(); } @@ -154,13 +159,23 @@ public class CFRObfuscationMapping extends NullMapping { lines.addAll(Arrays.asList(comment.split("\\R"))); } - for (MappingTree.MethodArgMapping arg : mapping.getArgs()) { + final Collection<? extends MappingTree.MethodArgMapping> methodArgs = mapping.getArgs(); + final List<String> params = new ArrayList<>(); + + for (MappingTree.MethodArgMapping arg : methodArgs) { String argComment = arg.getComment(); if (argComment != null) { - lines.addAll(Arrays.asList(("@param " + arg.getSrcName() + " " + argComment).split("\\R"))); + params.addAll(Arrays.asList(("@param " + arg.getSrcName() + " " + argComment).split("\\R"))); } } + + // Add a blank line between params and the comment. + if (!lines.isEmpty() && !params.isEmpty()) { + lines.add(""); + } + + lines.addAll(params); } if (!lines.isEmpty()) { diff --git a/src/main/java/net/fabricmc/loom/decompilers/cfr/LoomCFRDecompiler.java b/src/main/java/net/fabricmc/loom/decompilers/cfr/LoomCFRDecompiler.java index bbfb0be2..cb715139 100644 --- a/src/main/java/net/fabricmc/loom/decompilers/cfr/LoomCFRDecompiler.java +++ b/src/main/java/net/fabricmc/loom/decompilers/cfr/LoomCFRDecompiler.java @@ -32,6 +32,7 @@ import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.util.Collections; +import java.util.HashMap; import java.util.Map; import java.util.jar.Attributes; import java.util.jar.JarOutputStream; @@ -64,7 +65,10 @@ public class LoomCFRDecompiler implements LoomDecompiler { @Override public void decompile(Path compiledJar, Path sourcesDestination, Path linemapDestination, DecompilationMetadata metaData) { final String path = compiledJar.toAbsolutePath().toString(); - final Options options = OptionsImpl.getFactory().create(DECOMPILE_OPTIONS); + final Map<String, String> allOptions = new HashMap<>(DECOMPILE_OPTIONS); + allOptions.putAll(metaData.options()); + + final Options options = OptionsImpl.getFactory().create(allOptions); ClassFileSourceImpl classFileSource = new ClassFileSourceImpl(options); @@ -138,7 +142,7 @@ public class LoomCFRDecompiler implements LoomDecompiler { decompiler.decompile(Paths.get("input.jar"), Paths.get("output-sources.jar"), lineMap, - new DecompilationMetadata(4, null, Collections.emptyList(), null) + new DecompilationMetadata(4, null, Collections.emptyList(), null, Collections.emptyMap()) ); LineNumberRemapper lineNumberRemapper = new LineNumberRemapper(); diff --git a/src/main/java/net/fabricmc/loom/decompilers/fernflower/FabricFernFlowerDecompiler.java b/src/main/java/net/fabricmc/loom/decompilers/fernflower/FabricFernFlowerDecompiler.java index c3009448..9ad8111e 100644 --- a/src/main/java/net/fabricmc/loom/decompilers/fernflower/FabricFernFlowerDecompiler.java +++ b/src/main/java/net/fabricmc/loom/decompilers/fernflower/FabricFernFlowerDecompiler.java @@ -25,6 +25,7 @@ package net.fabricmc.loom.decompilers.fernflower; import java.nio.file.Path; +import java.util.HashMap; import java.util.Map; import org.jetbrains.java.decompiler.main.Fernflower; @@ -38,21 +39,25 @@ import net.fabricmc.loom.api.decompilers.LoomDecompiler; public final class FabricFernFlowerDecompiler implements LoomDecompiler { @Override public String name() { - return "FabricFlower"; // Or something else? + return "FernFlower"; } @Override public void decompile(Path compiledJar, Path sourcesDestination, Path linemapDestination, DecompilationMetadata metaData) { - Map<String, Object> options = Map.of( - IFernflowerPreferences.DECOMPILE_GENERIC_SIGNATURES, "1", - IFernflowerPreferences.BYTECODE_SOURCE_MAPPING, "1", - IFernflowerPreferences.REMOVE_SYNTHETIC, "1", - IFernflowerPreferences.LOG_LEVEL, "trace", - IFernflowerPreferences.THREADS, String.valueOf(metaData.numberOfThreads()), - IFernflowerPreferences.INDENT_STRING, "\t", - IFabricJavadocProvider.PROPERTY_NAME, new TinyJavadocProvider(metaData.javaDocs().toFile()) + final Map<String, Object> options = new HashMap<>( + Map.of( + IFernflowerPreferences.DECOMPILE_GENERIC_SIGNATURES, "1", + IFernflowerPreferences.BYTECODE_SOURCE_MAPPING, "1", + IFernflowerPreferences.REMOVE_SYNTHETIC, "1", + IFernflowerPreferences.LOG_LEVEL, "trace", + IFernflowerPreferences.THREADS, String.valueOf(metaData.numberOfThreads()), + IFernflowerPreferences.INDENT_STRING, "\t", + IFabricJavadocProvider.PROPERTY_NAME, new TinyJavadocProvider(metaData.javaDocs().toFile()) + ) ); + options.putAll(metaData.options()); + IResultSaver saver = new ThreadSafeResultSaver(sourcesDestination::toFile, linemapDestination::toFile); Fernflower ff = new Fernflower(FernFlowerUtils::getBytecode, saver, options, new FernflowerLogger(metaData.logger())); |