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 5331a8e65..a35b7e7ef 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 f6890d505..e6830d4e8 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 ad2e4df72..f13332a25 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")));