From fd65d9727ec0f443fd9a1504f9b50bafba1fbd76 Mon Sep 17 00:00:00 2001 From: jeff Date: Sun, 28 Sep 2014 20:27:49 -0400 Subject: fixed recognition of static initializer tokens --- src/cuchaz/enigma/Deobfuscator.java | 1 + src/cuchaz/enigma/analysis/EntryReference.java | 2 +- src/cuchaz/enigma/analysis/SourceIndexClassVisitor.java | 12 +++++++++++- 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/cuchaz/enigma/Deobfuscator.java b/src/cuchaz/enigma/Deobfuscator.java index 9235cf74..bd4345e7 100644 --- a/src/cuchaz/enigma/Deobfuscator.java +++ b/src/cuchaz/enigma/Deobfuscator.java @@ -45,6 +45,7 @@ import cuchaz.enigma.analysis.JarIndex; import cuchaz.enigma.analysis.SourceIndex; import cuchaz.enigma.analysis.SourceIndexVisitor; import cuchaz.enigma.analysis.Token; +import cuchaz.enigma.analysis.TreeDumpVisitor; import cuchaz.enigma.mapping.ArgumentEntry; import cuchaz.enigma.mapping.BehaviorEntry; import cuchaz.enigma.mapping.BehaviorEntryFactory; diff --git a/src/cuchaz/enigma/analysis/EntryReference.java b/src/cuchaz/enigma/analysis/EntryReference.java index df977fb5..4da2f589 100644 --- a/src/cuchaz/enigma/analysis/EntryReference.java +++ b/src/cuchaz/enigma/analysis/EntryReference.java @@ -20,7 +20,7 @@ import cuchaz.enigma.mapping.Entry; public class EntryReference { - private static final List ConstructorNonNames = Arrays.asList( "this", "super" ); + private static final List ConstructorNonNames = Arrays.asList( "this", "super", "static" ); public E entry; public C context; diff --git a/src/cuchaz/enigma/analysis/SourceIndexClassVisitor.java b/src/cuchaz/enigma/analysis/SourceIndexClassVisitor.java index fc8cd665..24c48227 100644 --- a/src/cuchaz/enigma/analysis/SourceIndexClassVisitor.java +++ b/src/cuchaz/enigma/analysis/SourceIndexClassVisitor.java @@ -15,6 +15,7 @@ import com.strobel.assembler.metadata.MethodDefinition; import com.strobel.assembler.metadata.TypeDefinition; import com.strobel.assembler.metadata.TypeReference; import com.strobel.decompiler.languages.TextLocation; +import com.strobel.decompiler.languages.java.ast.AstNode; import com.strobel.decompiler.languages.java.ast.ConstructorDeclaration; import com.strobel.decompiler.languages.java.ast.EnumValueDeclaration; import com.strobel.decompiler.languages.java.ast.FieldDeclaration; @@ -74,7 +75,16 @@ public class SourceIndexClassVisitor extends SourceIndexVisitor MethodDefinition def = node.getUserData( Keys.METHOD_DEFINITION ); ClassEntry classEntry = new ClassEntry( def.getDeclaringType().getInternalName() ); BehaviorEntry behaviorEntry = BehaviorEntryFactory.create( classEntry, def.getName(), def.getSignature() ); - index.addDeclaration( node.getNameToken(), behaviorEntry ); + AstNode tokenNode = node.getNameToken(); + if( behaviorEntry instanceof ConstructorEntry ) + { + ConstructorEntry constructorEntry = (ConstructorEntry)behaviorEntry; + if( constructorEntry.isStatic() ) + { + tokenNode = node.getModifiers().firstOrNullObject(); + } + } + index.addDeclaration( tokenNode, behaviorEntry ); return node.acceptVisitor( new SourceIndexBehaviorVisitor( behaviorEntry ), index ); } -- cgit v1.2.3