summaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorGravatar Thog2016-08-30 21:42:10 +0200
committerGravatar Thog2016-08-30 21:42:10 +0200
commitda42934c0a9c2ba9d209afe847940c69d37191b8 (patch)
tree269cb17c75c5bc265b1367cb91a742fcb9bd1765 /src/main/java
parentFix #14 (diff)
downloadenigma-da42934c0a9c2ba9d209afe847940c69d37191b8.tar.gz
enigma-da42934c0a9c2ba9d209afe847940c69d37191b8.tar.xz
enigma-da42934c0a9c2ba9d209afe847940c69d37191b8.zip
Fix generic method not being mapped as token in the editor (Close #16)
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/cuchaz/enigma/analysis/SourceIndexBehaviorVisitor.java9
-rw-r--r--src/main/java/cuchaz/enigma/mapping/ProcyonEntryFactory.java4
2 files changed, 9 insertions, 4 deletions
diff --git a/src/main/java/cuchaz/enigma/analysis/SourceIndexBehaviorVisitor.java b/src/main/java/cuchaz/enigma/analysis/SourceIndexBehaviorVisitor.java
index aee7cf16..2c84cd69 100644
--- a/src/main/java/cuchaz/enigma/analysis/SourceIndexBehaviorVisitor.java
+++ b/src/main/java/cuchaz/enigma/analysis/SourceIndexBehaviorVisitor.java
@@ -96,9 +96,12 @@ public class SourceIndexBehaviorVisitor extends SourceIndexVisitor {
96 @Override 96 @Override
97 public Void visitParameterDeclaration(ParameterDeclaration node, SourceIndex index) { 97 public Void visitParameterDeclaration(ParameterDeclaration node, SourceIndex index) {
98 ParameterDefinition def = node.getUserData(Keys.PARAMETER_DEFINITION); 98 ParameterDefinition def = node.getUserData(Keys.PARAMETER_DEFINITION);
99 if (def.getMethod() instanceof MethodDefinition) { 99 if (def.getMethod() instanceof MemberReference) {
100 MethodDefinition methodDef = (MethodDefinition) def.getMethod(); 100 BehaviorEntry behaviorEntry;
101 BehaviorEntry behaviorEntry = ProcyonEntryFactory.getBehaviorEntry(methodDef); 101 if (def.getMethod() instanceof MethodDefinition)
102 behaviorEntry = ProcyonEntryFactory.getBehaviorEntry((MethodDefinition) def.getMethod());
103 else
104 behaviorEntry = ProcyonEntryFactory.getMethodEntry((MemberReference) def.getMethod()); // Generic definition
102 ArgumentEntry argumentEntry = new ArgumentEntry(behaviorEntry, argumentPosition++, node.getName()); 105 ArgumentEntry argumentEntry = new ArgumentEntry(behaviorEntry, argumentPosition++, node.getName());
103 index.addDeclaration(node.getNameToken(), argumentEntry); 106 index.addDeclaration(node.getNameToken(), argumentEntry);
104 } 107 }
diff --git a/src/main/java/cuchaz/enigma/mapping/ProcyonEntryFactory.java b/src/main/java/cuchaz/enigma/mapping/ProcyonEntryFactory.java
index 26e554b9..dca1e5ef 100644
--- a/src/main/java/cuchaz/enigma/mapping/ProcyonEntryFactory.java
+++ b/src/main/java/cuchaz/enigma/mapping/ProcyonEntryFactory.java
@@ -11,6 +11,8 @@
11package cuchaz.enigma.mapping; 11package cuchaz.enigma.mapping;
12 12
13import com.strobel.assembler.metadata.FieldDefinition; 13import com.strobel.assembler.metadata.FieldDefinition;
14import com.strobel.assembler.metadata.IMethodSignature;
15import com.strobel.assembler.metadata.MemberReference;
14import com.strobel.assembler.metadata.MethodDefinition; 16import com.strobel.assembler.metadata.MethodDefinition;
15 17
16public class ProcyonEntryFactory { 18public class ProcyonEntryFactory {
@@ -19,7 +21,7 @@ public class ProcyonEntryFactory {
19 return new FieldEntry(new ClassEntry(def.getDeclaringType().getInternalName()), def.getName(), new Type(def.getErasedSignature())); 21 return new FieldEntry(new ClassEntry(def.getDeclaringType().getInternalName()), def.getName(), new Type(def.getErasedSignature()));
20 } 22 }
21 23
22 public static MethodEntry getMethodEntry(MethodDefinition def) { 24 public static MethodEntry getMethodEntry(MemberReference def) {
23 return new MethodEntry(new ClassEntry(def.getDeclaringType().getInternalName()), def.getName(), new Signature(def.getErasedSignature())); 25 return new MethodEntry(new ClassEntry(def.getDeclaringType().getInternalName()), def.getName(), new Signature(def.getErasedSignature()));
24 } 26 }
25 27