From 164123f542383c923171f896a8fe34495cef4fc2 Mon Sep 17 00:00:00 2001 From: Skylot Date: Sun, 1 Mar 2015 15:20:48 +0300 Subject: [PATCH] core: improve variable names after 'toString' invoke --- .../main/java/jadx/core/codegen/NameGen.java | 28 +++++++++++++------ 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/jadx-core/src/main/java/jadx/core/codegen/NameGen.java b/jadx-core/src/main/java/jadx/core/codegen/NameGen.java index 2adc509b..e90e188e 100644 --- a/jadx-core/src/main/java/jadx/core/codegen/NameGen.java +++ b/jadx-core/src/main/java/jadx/core/codegen/NameGen.java @@ -4,6 +4,7 @@ import jadx.core.Consts; import jadx.core.deobf.NameMapper; import jadx.core.dex.attributes.nodes.LoopLabelAttr; import jadx.core.dex.info.ClassInfo; +import jadx.core.dex.info.MethodInfo; import jadx.core.dex.instructions.InvokeNode; import jadx.core.dex.instructions.args.ArgType; import jadx.core.dex.instructions.args.InsnArg; @@ -187,14 +188,7 @@ public class NameGen { switch (insn.getType()) { case INVOKE: InvokeNode inv = (InvokeNode) insn; - String name = inv.getCallMth().getName(); - if (name.startsWith("get") || name.startsWith("set")) { - return fromName(name.substring(3)); - } - if ("iterator".equals(name)) { - return "it"; - } - return name; + return makeNameFromInvoke(inv.getCallMth()); case CONSTRUCTOR: ConstructorInsn co = (ConstructorInsn) insn; @@ -222,4 +216,22 @@ public class NameGen { } return null; } + + private static String makeNameFromInvoke(MethodInfo callMth) { + String name = callMth.getName(); + if (name.startsWith("get") || name.startsWith("set")) { + return fromName(name.substring(3)); + } + ArgType declType = callMth.getDeclClass().getType(); + if ("iterator".equals(name)) { + return "it"; + } + if ("toString".equals(name)) { + return makeNameForType(declType); + } + if ("forName".equals(name) && declType.equals(ArgType.CLASS)) { + return OBJ_ALIAS.get(Consts.CLASS_CLASS); + } + return name; + } } -- GitLab