From b364e4e445f689a0183ab985d2c3083719a38587 Mon Sep 17 00:00:00 2001 From: asie Date: Tue, 11 Dec 2018 10:56:07 +0100 Subject: fix #74 --- .../cuchaz/enigma/analysis/MethodInheritanceTreeNode.java | 5 +++++ src/main/java/cuchaz/enigma/analysis/TranslationIndex.java | 11 +++++++++++ 2 files changed, 16 insertions(+) diff --git a/src/main/java/cuchaz/enigma/analysis/MethodInheritanceTreeNode.java b/src/main/java/cuchaz/enigma/analysis/MethodInheritanceTreeNode.java index 904e5945..dc341979 100644 --- a/src/main/java/cuchaz/enigma/analysis/MethodInheritanceTreeNode.java +++ b/src/main/java/cuchaz/enigma/analysis/MethodInheritanceTreeNode.java @@ -89,6 +89,11 @@ public class MethodInheritanceTreeNode extends DefaultMutableTreeNode { nodes.add(new MethodInheritanceTreeNode(this.deobfuscatingTranslator, methodEntry, index.containsObfMethod(methodEntry))); } + for (ClassEntry subclassEntry : index.getTranslationIndex().getImplementers(this.entry.getOwnerClassEntry())) { + MethodEntry methodEntry = new MethodEntry(subclassEntry, this.entry.getName(), this.entry.getDesc()); + nodes.add(new MethodInheritanceTreeNode(this.deobfuscatingTranslator, methodEntry, index.containsObfMethod(methodEntry))); + } + // add them to this node nodes.forEach(this::add); diff --git a/src/main/java/cuchaz/enigma/analysis/TranslationIndex.java b/src/main/java/cuchaz/enigma/analysis/TranslationIndex.java index db116623..984d84b2 100644 --- a/src/main/java/cuchaz/enigma/analysis/TranslationIndex.java +++ b/src/main/java/cuchaz/enigma/analysis/TranslationIndex.java @@ -155,6 +155,17 @@ public class TranslationIndex { return ancestors; } + public List getImplementers(ClassEntry classEntry) { + // linear search is fast enough for now + List implementers = Lists.newArrayList(); + for (ClassEntry itf : this.interfaces.keySet()) { + if (this.interfaces.containsEntry(itf, classEntry)) { + implementers.add(itf); + } + } + return implementers; + } + public List getSubclass(ClassEntry classEntry) { // linear search is fast enough for now List subclasses = Lists.newArrayList(); -- cgit v1.2.3