core: exclude inner classes from class dependencies (#318)

This commit is contained in:
Skylot
2018-07-22 14:34:46 +03:00
parent 9752ec2655
commit 156e54c77f
2 changed files with 12 additions and 0 deletions
@@ -152,8 +152,12 @@ public class MethodNode extends LineAttrNode implements ILoadable, IDexNode {
}
instructions = null;
blocks = null;
enterBlock = null;
exitBlocks = null;
exceptionHandlers.clear();
sVars.clear();
region = null;
loops.clear();
}
private boolean parseSignature() {
@@ -30,6 +30,7 @@ public class DependencyCollector extends AbstractVisitor {
processClass(inner, dex, depList);
}
depList.remove(cls);
removeInnerClassesFromDeps(cls, depList);
return false;
}
@@ -122,4 +123,11 @@ public class DependencyCollector extends AbstractVisitor {
depList.add(clsNode.getTopParentClass());
}
}
private void removeInnerClassesFromDeps(ClassNode cls, Set<ClassNode> depList) {
cls.getInnerClasses().forEach(inner -> {
depList.remove(inner);
removeInnerClassesFromDeps(inner, depList);
});
}
}