From 8f954133dc18ccba4a816b7e2f223dccdce2a1b3 Mon Sep 17 00:00:00 2001 From: gegy1000 Date: Sat, 23 Feb 2019 16:48:31 +0200 Subject: Drop final modifiers from displayed source ast for easier readability --- .../analysis/DropVarModifiersAstTransform.java | 37 ++++++++++++++++++++++ src/main/java/cuchaz/enigma/gui/GuiController.java | 1 + 2 files changed, 38 insertions(+) create mode 100644 src/main/java/cuchaz/enigma/analysis/DropVarModifiersAstTransform.java diff --git a/src/main/java/cuchaz/enigma/analysis/DropVarModifiersAstTransform.java b/src/main/java/cuchaz/enigma/analysis/DropVarModifiersAstTransform.java new file mode 100644 index 00000000..0be58911 --- /dev/null +++ b/src/main/java/cuchaz/enigma/analysis/DropVarModifiersAstTransform.java @@ -0,0 +1,37 @@ +package cuchaz.enigma.analysis; + +import com.strobel.decompiler.languages.java.ast.*; +import com.strobel.decompiler.languages.java.ast.transforms.IAstTransform; + +import javax.lang.model.element.Modifier; + +public final class DropVarModifiersAstTransform implements IAstTransform { + public static final DropVarModifiersAstTransform INSTANCE = new DropVarModifiersAstTransform(); + + private DropVarModifiersAstTransform() { + } + + @Override + public void run(AstNode compilationUnit) { + compilationUnit.acceptVisitor(new Visitor(), null); + } + + static class Visitor extends DepthFirstAstVisitor { + @Override + public Void visitParameterDeclaration(ParameterDeclaration node, Void data) { + for (JavaModifierToken modifierToken : node.getChildrenByRole(EntityDeclaration.MODIFIER_ROLE)) { + if (modifierToken.getModifier() == Modifier.FINAL) { + modifierToken.remove(); + } + } + + return null; + } + + @Override + public Void visitVariableDeclaration(VariableDeclarationStatement node, Void data) { + node.removeModifier(Modifier.FINAL); + return null; + } + } +} diff --git a/src/main/java/cuchaz/enigma/gui/GuiController.java b/src/main/java/cuchaz/enigma/gui/GuiController.java index 57cb35ef..45c61319 100644 --- a/src/main/java/cuchaz/enigma/gui/GuiController.java +++ b/src/main/java/cuchaz/enigma/gui/GuiController.java @@ -344,6 +344,7 @@ public class GuiController { } DropImportAstTransform.INSTANCE.run(sourceTree); + DropVarModifiersAstTransform.INSTANCE.run(sourceTree); String sourceString = sourceProvider.writeSourceToString(sourceTree); -- cgit v1.2.3