From 79e8b7ea7ed27d65582d1c399a78e540d0f42895 Mon Sep 17 00:00:00 2001 From: jeff Date: Fri, 22 Aug 2014 00:37:31 -0400 Subject: fixed constructor references in call graph searches clear reference list when opening single reference (instead of list of references) --- .../enigma/analysis/SourceIndexBehaviorVisitor.java | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) (limited to 'src/cuchaz/enigma/analysis/SourceIndexBehaviorVisitor.java') diff --git a/src/cuchaz/enigma/analysis/SourceIndexBehaviorVisitor.java b/src/cuchaz/enigma/analysis/SourceIndexBehaviorVisitor.java index a943858..ab50552 100644 --- a/src/cuchaz/enigma/analysis/SourceIndexBehaviorVisitor.java +++ b/src/cuchaz/enigma/analysis/SourceIndexBehaviorVisitor.java @@ -21,12 +21,14 @@ import com.strobel.decompiler.languages.java.ast.InvocationExpression; import com.strobel.decompiler.languages.java.ast.Keys; import com.strobel.decompiler.languages.java.ast.MemberReferenceExpression; import com.strobel.decompiler.languages.java.ast.MethodDeclaration; +import com.strobel.decompiler.languages.java.ast.ObjectCreationExpression; import com.strobel.decompiler.languages.java.ast.ParameterDeclaration; import com.strobel.decompiler.languages.java.ast.SimpleType; import cuchaz.enigma.mapping.ArgumentEntry; import cuchaz.enigma.mapping.BehaviorEntry; import cuchaz.enigma.mapping.ClassEntry; +import cuchaz.enigma.mapping.ConstructorEntry; import cuchaz.enigma.mapping.Entry; import cuchaz.enigma.mapping.FieldEntry; import cuchaz.enigma.mapping.MethodEntry; @@ -57,9 +59,9 @@ public class SourceIndexBehaviorVisitor extends SourceIndexVisitor { MemberReference ref = node.getUserData( Keys.MEMBER_REFERENCE ); ClassEntry classEntry = new ClassEntry( ref.getDeclaringType().getInternalName() ); - MethodEntry methodEntry = new MethodEntry( classEntry, ref.getName(), ref.getSignature() ); if( node.getTarget() instanceof MemberReferenceExpression ) { + MethodEntry methodEntry = new MethodEntry( classEntry, ref.getName(), ref.getSignature() ); index.addReference( ((MemberReferenceExpression)node.getTarget()).getMemberNameToken(), new EntryReference( methodEntry, m_behaviorEntry ) @@ -131,4 +133,21 @@ public class SourceIndexBehaviorVisitor extends SourceIndexVisitor return recurse( node, index ); } + + @Override + public Void visitObjectCreationExpression( ObjectCreationExpression node, SourceIndex index ) + { + MemberReference ref = node.getUserData( Keys.MEMBER_REFERENCE ); + ClassEntry classEntry = new ClassEntry( ref.getDeclaringType().getInternalName() ); + ConstructorEntry constructorEntry = new ConstructorEntry( classEntry, ref.getSignature() ); + if( node.getType() instanceof SimpleType ) + { + index.addReference( + ((SimpleType)node.getType()).getIdentifierToken(), + new EntryReference( constructorEntry, m_behaviorEntry ) + ); + } + + return recurse( node, index ); + } } -- cgit v1.2.3