From 099acfca1dc72d4b88ce58d8ae7b44cb547c2928 Mon Sep 17 00:00:00 2001 From: Skylot Date: Wed, 15 Sep 2021 21:43:15 +0100 Subject: [PATCH] fix: don't add parenthesis for field init code --- .../src/main/java/jadx/core/codegen/InsnGen.java | 13 ++++++++----- .../core/dex/visitors/MarkMethodsForInline.java | 2 +- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/jadx-core/src/main/java/jadx/core/codegen/InsnGen.java b/jadx-core/src/main/java/jadx/core/codegen/InsnGen.java index fa822d9ae..5f89b0673 100644 --- a/jadx-core/src/main/java/jadx/core/codegen/InsnGen.java +++ b/jadx-core/src/main/java/jadx/core/codegen/InsnGen.java @@ -101,6 +101,10 @@ public class InsnGen { } public void addArg(ICodeWriter code, InsnArg arg, boolean wrap) throws CodegenException { + addArg(code, arg, wrap ? BODY_ONLY_FLAG : BODY_ONLY_NOWRAP_FLAGS); + } + + public void addArg(ICodeWriter code, InsnArg arg, Set flags) throws CodegenException { if (arg.isRegister()) { CodeVar codeVar = CodeGenUtils.getCodeVar((RegisterArg) arg); if (codeVar != null) { @@ -113,7 +117,7 @@ public class InsnGen { } else if (arg.isLiteral()) { code.add(lit((LiteralArg) arg)); } else if (arg.isInsnWrap()) { - addWrappedArg(code, (InsnWrapArg) arg, wrap); + addWrappedArg(code, (InsnWrapArg) arg, flags); } else if (arg.isNamed()) { if (arg instanceof NamedArg) { VariableNode node = mth.getVariable(((NamedArg) arg).getIndex()); @@ -127,15 +131,14 @@ public class InsnGen { } } - private void addWrappedArg(ICodeWriter code, InsnWrapArg arg, boolean wrap) throws CodegenException { + private void addWrappedArg(ICodeWriter code, InsnWrapArg arg, Set flags) throws CodegenException { InsnNode wrapInsn = arg.getWrapInsn(); if (wrapInsn.contains(AFlag.FORCE_ASSIGN_INLINE)) { code.add('('); makeInsn(wrapInsn, code, Flags.INLINE); code.add(')'); } else { - Flags flags = wrap ? Flags.BODY_ONLY : Flags.BODY_ONLY_NOWRAP; - makeInsn(wrapInsn, code, flags); + makeInsnBody(code, wrapInsn, flags); } } @@ -509,7 +512,7 @@ public class InsnGen { break; case ONE_ARG: - addArg(code, insn.getArg(0)); + addArg(code, insn.getArg(0), state); break; /* fallback mode instructions */ diff --git a/jadx-core/src/main/java/jadx/core/dex/visitors/MarkMethodsForInline.java b/jadx-core/src/main/java/jadx/core/dex/visitors/MarkMethodsForInline.java index c6c1d1295..fadffd99b 100644 --- a/jadx-core/src/main/java/jadx/core/dex/visitors/MarkMethodsForInline.java +++ b/jadx-core/src/main/java/jadx/core/dex/visitors/MarkMethodsForInline.java @@ -76,7 +76,7 @@ public class MarkMethodsForInline extends AbstractVisitor { } if (insnsCount == 1) { InsnNode insn = insns.get(0); - if (insn.getType() == InsnType.RETURN) { + if (insn.getType() == InsnType.RETURN && insn.getArgsCount() == 1) { // synthetic field getter // set arg from 'return' instruction return addInlineAttr(mth, InsnNode.wrapArg(insn.getArg(0)));