From a1bfdc6323e1d3351251ae020d32e94d2af0dde8 Mon Sep 17 00:00:00 2001 From: Ahmed Ashour Date: Thu, 11 Apr 2019 12:07:14 +0200 Subject: [PATCH] fix: remove static field redundant array type when initialized (PR #580) --- .../main/java/jadx/core/dex/visitors/ExtractFieldInit.java | 4 ++++ .../jadx/tests/integration/arrays/TestArrayInitField.java | 4 +++- .../tests/integration/others/TestFieldInitInTryCatch.java | 2 +- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/jadx-core/src/main/java/jadx/core/dex/visitors/ExtractFieldInit.java b/jadx-core/src/main/java/jadx/core/dex/visitors/ExtractFieldInit.java index b58324dc9..d4ea7960b 100644 --- a/jadx-core/src/main/java/jadx/core/dex/visitors/ExtractFieldInit.java +++ b/jadx-core/src/main/java/jadx/core/dex/visitors/ExtractFieldInit.java @@ -92,6 +92,10 @@ public class ExtractFieldInit extends AbstractVisitor { if (initInsns.size() == 1) { InsnNode insn = initInsns.get(0); if (checkInsn(insn)) { + InsnArg arg = insn.getArg(0); + if (arg instanceof InsnWrapArg) { + ((InsnWrapArg) arg).getWrapInsn().add(AFlag.DECLARE_VAR); + } InsnRemover.remove(classInitMth, insn); addFieldInitAttr(classInitMth, field, insn); } diff --git a/jadx-core/src/test/java/jadx/tests/integration/arrays/TestArrayInitField.java b/jadx-core/src/test/java/jadx/tests/integration/arrays/TestArrayInitField.java index 4b494b5ae..5f9726fce 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/arrays/TestArrayInitField.java +++ b/jadx-core/src/test/java/jadx/tests/integration/arrays/TestArrayInitField.java @@ -11,7 +11,8 @@ public class TestArrayInitField extends IntegrationTest { public static class TestCls { - byte[] bytes = new byte[]{10, 20, 30}; + static byte[] a = new byte[]{10, 20, 30}; + byte[] b = new byte[]{40, 50, 60}; } @Test @@ -20,5 +21,6 @@ public class TestArrayInitField extends IntegrationTest { String code = cls.getCode().toString(); assertThat(code, containsString("= {10, 20, 30};")); + assertThat(code, containsString("= {40, 50, 60};")); } } diff --git a/jadx-core/src/test/java/jadx/tests/integration/others/TestFieldInitInTryCatch.java b/jadx-core/src/test/java/jadx/tests/integration/others/TestFieldInitInTryCatch.java index 34634a354..7e811f493 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/others/TestFieldInitInTryCatch.java +++ b/jadx-core/src/test/java/jadx/tests/integration/others/TestFieldInitInTryCatch.java @@ -82,6 +82,6 @@ public class TestFieldInitInTryCatch extends IntegrationTest { ClassNode cls = getClassNode(TestCls3.class); String code = cls.getCode().toString(); - assertThat(code, containsOne("public static final String[] a = new String[]{\"a\"};")); + assertThat(code, containsOne("public static final String[] a = {\"a\"};")); } }