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 ++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 src/main/java/cuchaz/enigma/analysis/DropVarModifiersAstTransform.java (limited to 'src/main/java/cuchaz/enigma/analysis') 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 0000000..0be5891 --- /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; + } + } +} -- cgit v1.2.3