From e358476c7142c636ca8db3220701e1ab0383413d Mon Sep 17 00:00:00 2001 From: Skylot Date: Sat, 9 Sep 2023 20:16:57 +0100 Subject: [PATCH] fix: attempt to improve package rename checks (#1997) --- jadx-core/src/main/java/jadx/core/dex/info/ClassInfo.java | 2 +- jadx-core/src/main/java/jadx/core/dex/nodes/ClassNode.java | 6 +++--- jadx-core/src/main/java/jadx/core/dex/nodes/RootNode.java | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/jadx-core/src/main/java/jadx/core/dex/info/ClassInfo.java b/jadx-core/src/main/java/jadx/core/dex/info/ClassInfo.java index d127e36b7..8df8fca43 100644 --- a/jadx-core/src/main/java/jadx/core/dex/info/ClassInfo.java +++ b/jadx-core/src/main/java/jadx/core/dex/info/ClassInfo.java @@ -79,7 +79,7 @@ public final class ClassInfo implements Comparable { public void changePkg(String aliasPkg) { if (isInner()) { - throw new JadxRuntimeException("Can't change package for inner class"); + throw new JadxRuntimeException("Can't change package for inner class: " + this); } if (!Objects.equals(getAliasPkg(), aliasPkg)) { ClassAliasInfo newAlias = new ClassAliasInfo(aliasPkg, getAliasShortName()); diff --git a/jadx-core/src/main/java/jadx/core/dex/nodes/ClassNode.java b/jadx-core/src/main/java/jadx/core/dex/nodes/ClassNode.java index 501372bf8..e4294eaef 100644 --- a/jadx-core/src/main/java/jadx/core/dex/nodes/ClassNode.java +++ b/jadx-core/src/main/java/jadx/core/dex/nodes/ClassNode.java @@ -582,7 +582,7 @@ public class ClassNode extends NotificationAttrNode clsInfo.changeShortName(newName); return; } - if (isInner()) { + if (clsInfo.isInner()) { addWarn("Can't change package for inner class: " + this + " to " + newName); return; } @@ -598,7 +598,7 @@ public class ClassNode extends NotificationAttrNode private boolean changeClassNodePackage(String fullPkg) { if (clsInfo.isInner()) { - throw new JadxRuntimeException("Can't change package for inner class"); + throw new JadxRuntimeException("Can't change package for inner class: " + clsInfo); } if (fullPkg.equals(clsInfo.getAliasPkg())) { return false; @@ -618,7 +618,7 @@ public class ClassNode extends NotificationAttrNode @Override public void onParentPackageUpdate(PackageNode updatedPkg) { - if (isInner()) { + if (clsInfo.isInner()) { return; } clsInfo.changePkg(packageNode.getAliasPkgInfo().getFullName()); diff --git a/jadx-core/src/main/java/jadx/core/dex/nodes/RootNode.java b/jadx-core/src/main/java/jadx/core/dex/nodes/RootNode.java index 82dd40866..66eea3948 100644 --- a/jadx-core/src/main/java/jadx/core/dex/nodes/RootNode.java +++ b/jadx-core/src/main/java/jadx/core/dex/nodes/RootNode.java @@ -313,7 +313,7 @@ public class RootNode { } classes.forEach(ClassNode::updateParentClass); for (PackageNode pkg : packages) { - pkg.getClasses().removeIf(ClassNode::isInner); + pkg.getClasses().removeIf(cls -> cls.getClassInfo().isInner()); } }