From 7d6f50641e254a24aeb859d7dde8bf314490ca02 Mon Sep 17 00:00:00 2001 From: asiekierka Date: Thu, 18 Aug 2016 12:18:15 +0200 Subject: fix #4 by adding bridge checks to related method implementation scanning - please verify --- src/main/java/cuchaz/enigma/analysis/JarIndex.java | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) (limited to 'src/main/java') diff --git a/src/main/java/cuchaz/enigma/analysis/JarIndex.java b/src/main/java/cuchaz/enigma/analysis/JarIndex.java index bb36c9e..ddfdbd6 100644 --- a/src/main/java/cuchaz/enigma/analysis/JarIndex.java +++ b/src/main/java/cuchaz/enigma/analysis/JarIndex.java @@ -628,7 +628,7 @@ public class JarIndex { public Set getRelatedMethodImplementations(MethodEntry obfMethodEntry) { Set methodEntries = Sets.newHashSet(); - getRelatedMethodImplementations(methodEntries, getMethodInheritance(null, obfMethodEntry)); + getRelatedMethodImplementations(methodEntries, getMethodInheritance(new Translator(), obfMethodEntry)); return methodEntries; } @@ -639,8 +639,16 @@ public class JarIndex { methodEntries.add(methodEntry); } + // look at bridged methods! + // FIXME: looks like a hack to me + MethodEntry bridgedEntry = getBridgedMethod(methodEntry); + while (bridgedEntry != null) { + methodEntries.addAll(getRelatedMethodImplementations(bridgedEntry)); + bridgedEntry = getBridgedMethod(bridgedEntry); + } + // look at interface methods too - for (MethodImplementationsTreeNode implementationsNode : getMethodImplementations(null, methodEntry)) { + for (MethodImplementationsTreeNode implementationsNode : getMethodImplementations(new Translator(), methodEntry)) { getRelatedMethodImplementations(methodEntries, implementationsNode); } @@ -720,7 +728,6 @@ public class JarIndex { } public Set getImplementingClasses(String targetInterfaceName) { - // linear search is fast enough for now Set classNames = Sets.newHashSet(); for (Map.Entry entry : this.translationIndex.getClassInterfaces()) { -- cgit v1.2.3