diff options
| author | 2016-08-30 21:42:10 +0200 | |
|---|---|---|
| committer | 2016-08-30 21:42:10 +0200 | |
| commit | da42934c0a9c2ba9d209afe847940c69d37191b8 (patch) | |
| tree | 269cb17c75c5bc265b1367cb91a742fcb9bd1765 | |
| parent | Fix #14 (diff) | |
| download | enigma-da42934c0a9c2ba9d209afe847940c69d37191b8.tar.gz enigma-da42934c0a9c2ba9d209afe847940c69d37191b8.tar.xz enigma-da42934c0a9c2ba9d209afe847940c69d37191b8.zip | |
Fix generic method not being mapped as token in the editor (Close #16)
| -rw-r--r-- | src/main/java/cuchaz/enigma/analysis/SourceIndexBehaviorVisitor.java | 9 | ||||
| -rw-r--r-- | src/main/java/cuchaz/enigma/mapping/ProcyonEntryFactory.java | 4 |
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 @@ | |||
| 11 | package cuchaz.enigma.mapping; | 11 | package cuchaz.enigma.mapping; |
| 12 | 12 | ||
| 13 | import com.strobel.assembler.metadata.FieldDefinition; | 13 | import com.strobel.assembler.metadata.FieldDefinition; |
| 14 | import com.strobel.assembler.metadata.IMethodSignature; | ||
| 15 | import com.strobel.assembler.metadata.MemberReference; | ||
| 14 | import com.strobel.assembler.metadata.MethodDefinition; | 16 | import com.strobel.assembler.metadata.MethodDefinition; |
| 15 | 17 | ||
| 16 | public class ProcyonEntryFactory { | 18 | public 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 | ||