From bdb61cf849c67f7da6a0bb7c047b506d8462058f Mon Sep 17 00:00:00 2001 From: jeff Date: Wed, 20 Aug 2014 22:30:12 -0400 Subject: fixed recognition of inner class tokens fixed recognition of reference tokens in constructors --- src/cuchaz/enigma/analysis/SourceIndexClassVisitor.java | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/cuchaz/enigma/analysis/SourceIndexClassVisitor.java b/src/cuchaz/enigma/analysis/SourceIndexClassVisitor.java index 2d4c0f57..52570886 100644 --- a/src/cuchaz/enigma/analysis/SourceIndexClassVisitor.java +++ b/src/cuchaz/enigma/analysis/SourceIndexClassVisitor.java @@ -14,6 +14,7 @@ import com.google.common.collect.HashMultiset; import com.google.common.collect.Multiset; import com.strobel.assembler.metadata.FieldDefinition; 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.ConstructorDeclaration; @@ -45,6 +46,16 @@ public class SourceIndexClassVisitor extends SourceIndexVisitor @Override public Void visitTypeDeclaration( TypeDeclaration node, SourceIndex index ) { + // is this this class, or a subtype? + TypeDefinition def = node.getUserData( Keys.TYPE_DEFINITION ); + ClassEntry classEntry = new ClassEntry( def.getInternalName() ); + if( !classEntry.equals( m_classEntry ) ) + { + // it's a sub-type, recurse + index.addDeclaration( node.getNameToken(), classEntry ); + return node.acceptVisitor( new SourceIndexClassVisitor( classEntry ), index ); + } + return recurse( node, index ); } @@ -84,7 +95,7 @@ public class SourceIndexClassVisitor extends SourceIndexVisitor ConstructorEntry constructorEntry = new ConstructorEntry( classEntry, def.getSignature() ); index.addDeclaration( node.getNameToken(), constructorEntry ); - return recurse( node, index ); + return node.acceptVisitor( new SourceIndexBehaviorVisitor( constructorEntry ), index ); } @Override -- cgit v1.2.3