diff --git a/jadx-core/src/main/java/jadx/core/codegen/ClassGen.java b/jadx-core/src/main/java/jadx/core/codegen/ClassGen.java index 5331a8e6509e1536a1a555b1bbfe279d6f6a7d1f..a35b7e7efb3dcbeb082b101c35048f4cad9f6b06 100644 --- a/jadx-core/src/main/java/jadx/core/codegen/ClassGen.java +++ b/jadx-core/src/main/java/jadx/core/codegen/ClassGen.java @@ -223,10 +223,25 @@ public class ClassGen { } public void addClassBody(CodeWriter clsCode) throws CodegenException { + addClassBody(clsCode, false); + } + + /** + * + * @param clsCode + * @param printClassName allows to print the original class name as comment (e.g. for inlined + * classes) + * @throws CodegenException + */ + public void addClassBody(CodeWriter clsCode, boolean printClassName) throws CodegenException { clsCode.add('{'); setBodyGenStarted(true); clsDeclLine = clsCode.getLine(); clsCode.incIndent(); + if (printClassName) { + clsCode.startLine(); + clsCode.add("/* class " + cls.getFullName() + " */"); + } addFields(clsCode); addInnerClsAndMethods(clsCode); clsCode.decIndent(); 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 f6890d505112286fb081ce4efe6465db38186b26..e6830d4e881bcfb863a146674657694357cbf87b 100644 --- a/jadx-core/src/main/java/jadx/core/codegen/InsnGen.java +++ b/jadx-core/src/main/java/jadx/core/codegen/InsnGen.java @@ -675,7 +675,7 @@ public class InsnGen { MethodNode callMth = mth.dex().resolveMethod(insn.getCallMth()); generateMethodArguments(code, insn, 0, callMth); code.add(' '); - new ClassGen(cls, mgen.getClassGen().getParentGen()).addClassBody(code); + new ClassGen(cls, mgen.getClassGen().getParentGen()).addClassBody(code, true); } private void makeInvoke(InvokeNode insn, CodeWriter code) throws CodegenException { diff --git a/jadx-core/src/test/java/jadx/tests/integration/inner/TestAnonymousClass14.java b/jadx-core/src/test/java/jadx/tests/integration/inner/TestAnonymousClass14.java index ad2e4df727cdcf8a93c99704919b8e3926c48998..f13332a2525c734aee4cadbb3fb08df6d9e56a0c 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/inner/TestAnonymousClass14.java +++ b/jadx-core/src/test/java/jadx/tests/integration/inner/TestAnonymousClass14.java @@ -22,6 +22,8 @@ public class TestAnonymousClass14 extends SmaliTest { public void makeAnonymousCls() { use(new Thread(this) { + / * class inner.OuterCls.AnonymousClass1 * / + public void someMethod() { } }); @@ -44,6 +46,7 @@ public class TestAnonymousClass14 extends SmaliTest { public void test() { ClassNode clsNode = getClassNodeFromSmaliFiles("inner", "TestAnonymousClass14", "OuterCls"); String code = clsNode.getCode().toString(); + code = code.replaceAll("/\\*.*?\\*/", ""); // remove block comments assertThat(code, not(containsString("AnonymousClass1"))); assertThat(code, not(containsString("synthetic")));