From da42934c0a9c2ba9d209afe847940c69d37191b8 Mon Sep 17 00:00:00 2001 From: Thog Date: Tue, 30 Aug 2016 21:42:10 +0200 Subject: Fix generic method not being mapped as token in the editor (Close #16) --- .../java/cuchaz/enigma/analysis/SourceIndexBehaviorVisitor.java | 9 ++++++--- 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 { @Override public Void visitParameterDeclaration(ParameterDeclaration node, SourceIndex index) { ParameterDefinition def = node.getUserData(Keys.PARAMETER_DEFINITION); - if (def.getMethod() instanceof MethodDefinition) { - MethodDefinition methodDef = (MethodDefinition) def.getMethod(); - BehaviorEntry behaviorEntry = ProcyonEntryFactory.getBehaviorEntry(methodDef); + if (def.getMethod() instanceof MemberReference) { + BehaviorEntry behaviorEntry; + if (def.getMethod() instanceof MethodDefinition) + behaviorEntry = ProcyonEntryFactory.getBehaviorEntry((MethodDefinition) def.getMethod()); + else + behaviorEntry = ProcyonEntryFactory.getMethodEntry((MemberReference) def.getMethod()); // Generic definition ArgumentEntry argumentEntry = new ArgumentEntry(behaviorEntry, argumentPosition++, node.getName()); index.addDeclaration(node.getNameToken(), argumentEntry); } 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 @@ package cuchaz.enigma.mapping; import com.strobel.assembler.metadata.FieldDefinition; +import com.strobel.assembler.metadata.IMethodSignature; +import com.strobel.assembler.metadata.MemberReference; import com.strobel.assembler.metadata.MethodDefinition; public class ProcyonEntryFactory { @@ -19,7 +21,7 @@ public class ProcyonEntryFactory { return new FieldEntry(new ClassEntry(def.getDeclaringType().getInternalName()), def.getName(), new Type(def.getErasedSignature())); } - public static MethodEntry getMethodEntry(MethodDefinition def) { + public static MethodEntry getMethodEntry(MemberReference def) { return new MethodEntry(new ClassEntry(def.getDeclaringType().getInternalName()), def.getName(), new Signature(def.getErasedSignature())); } -- cgit v1.2.3