summaryrefslogtreecommitdiff
path: root/src/cuchaz/enigma/analysis/SourceIndexBehaviorVisitor.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/cuchaz/enigma/analysis/SourceIndexBehaviorVisitor.java')
-rw-r--r--src/cuchaz/enigma/analysis/SourceIndexBehaviorVisitor.java21
1 files changed, 20 insertions, 1 deletions
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;
21import com.strobel.decompiler.languages.java.ast.Keys; 21import com.strobel.decompiler.languages.java.ast.Keys;
22import com.strobel.decompiler.languages.java.ast.MemberReferenceExpression; 22import com.strobel.decompiler.languages.java.ast.MemberReferenceExpression;
23import com.strobel.decompiler.languages.java.ast.MethodDeclaration; 23import com.strobel.decompiler.languages.java.ast.MethodDeclaration;
24import com.strobel.decompiler.languages.java.ast.ObjectCreationExpression;
24import com.strobel.decompiler.languages.java.ast.ParameterDeclaration; 25import com.strobel.decompiler.languages.java.ast.ParameterDeclaration;
25import com.strobel.decompiler.languages.java.ast.SimpleType; 26import com.strobel.decompiler.languages.java.ast.SimpleType;
26 27
27import cuchaz.enigma.mapping.ArgumentEntry; 28import cuchaz.enigma.mapping.ArgumentEntry;
28import cuchaz.enigma.mapping.BehaviorEntry; 29import cuchaz.enigma.mapping.BehaviorEntry;
29import cuchaz.enigma.mapping.ClassEntry; 30import cuchaz.enigma.mapping.ClassEntry;
31import cuchaz.enigma.mapping.ConstructorEntry;
30import cuchaz.enigma.mapping.Entry; 32import cuchaz.enigma.mapping.Entry;
31import cuchaz.enigma.mapping.FieldEntry; 33import cuchaz.enigma.mapping.FieldEntry;
32import cuchaz.enigma.mapping.MethodEntry; 34import cuchaz.enigma.mapping.MethodEntry;
@@ -57,9 +59,9 @@ public class SourceIndexBehaviorVisitor extends SourceIndexVisitor
57 { 59 {
58 MemberReference ref = node.getUserData( Keys.MEMBER_REFERENCE ); 60 MemberReference ref = node.getUserData( Keys.MEMBER_REFERENCE );
59 ClassEntry classEntry = new ClassEntry( ref.getDeclaringType().getInternalName() ); 61 ClassEntry classEntry = new ClassEntry( ref.getDeclaringType().getInternalName() );
60 MethodEntry methodEntry = new MethodEntry( classEntry, ref.getName(), ref.getSignature() );
61 if( node.getTarget() instanceof MemberReferenceExpression ) 62 if( node.getTarget() instanceof MemberReferenceExpression )
62 { 63 {
64 MethodEntry methodEntry = new MethodEntry( classEntry, ref.getName(), ref.getSignature() );
63 index.addReference( 65 index.addReference(
64 ((MemberReferenceExpression)node.getTarget()).getMemberNameToken(), 66 ((MemberReferenceExpression)node.getTarget()).getMemberNameToken(),
65 new EntryReference<Entry,Entry>( methodEntry, m_behaviorEntry ) 67 new EntryReference<Entry,Entry>( methodEntry, m_behaviorEntry )
@@ -131,4 +133,21 @@ public class SourceIndexBehaviorVisitor extends SourceIndexVisitor
131 133
132 return recurse( node, index ); 134 return recurse( node, index );
133 } 135 }
136
137 @Override
138 public Void visitObjectCreationExpression( ObjectCreationExpression node, SourceIndex index )
139 {
140 MemberReference ref = node.getUserData( Keys.MEMBER_REFERENCE );
141 ClassEntry classEntry = new ClassEntry( ref.getDeclaringType().getInternalName() );
142 ConstructorEntry constructorEntry = new ConstructorEntry( classEntry, ref.getSignature() );
143 if( node.getType() instanceof SimpleType )
144 {
145 index.addReference(
146 ((SimpleType)node.getType()).getIdentifierToken(),
147 new EntryReference<Entry,Entry>( constructorEntry, m_behaviorEntry )
148 );
149 }
150
151 return recurse( node, index );
152 }
134} 153}