diff --git a/src/java.base/share/classes/java/lang/classfile/CompoundElement.java b/src/java.base/share/classes/java/lang/classfile/CompoundElement.java index 38d149623e1..d9f9fe1e5f9 100644 --- a/src/java.base/share/classes/java/lang/classfile/CompoundElement.java +++ b/src/java.base/share/classes/java/lang/classfile/CompoundElement.java @@ -34,6 +34,8 @@ import java.util.function.Consumer; import java.util.stream.Stream; import java.util.stream.StreamSupport; +import jdk.internal.classfile.components.ClassPrinter; + /** * A {@link ClassFileElement} that has complex structure defined in terms of * other classfile elements, such as a method, field, method body, or entire @@ -92,4 +94,14 @@ public sealed interface CompoundElement return Collections.unmodifiableList(list); } + /** + * {@return a text representation of the compound element and its contents for debugging purposes} + * + * The format, structure and exact contents of the returned string are not specified and may change at any time in the future. + */ + default String toDebugString() { + StringBuilder text = new StringBuilder(); + ClassPrinter.toYaml(this, ClassPrinter.Verbosity.TRACE_ALL, text::append); + return text.toString(); + } } diff --git a/test/jdk/jdk/classfile/ClassPrinterTest.java b/test/jdk/jdk/classfile/ClassPrinterTest.java index 5dc136f59c3..506f3382b83 100644 --- a/test/jdk/jdk/classfile/ClassPrinterTest.java +++ b/test/jdk/jdk/classfile/ClassPrinterTest.java @@ -23,7 +23,7 @@ /* * @test - * @bug 8335927 + * @bug 8335927 8345773 * @summary Testing ClassFile ClassPrinter. * @run junit ClassPrinterTest */ @@ -122,8 +122,7 @@ class ClassPrinterTest { @Test void testPrintYamlTraceAll() throws IOException { - var out = new StringBuilder(); - ClassPrinter.toYaml(getClassModel(), ClassPrinter.Verbosity.TRACE_ALL, out::append); + var out = getClassModel().toDebugString(); assertOut(out, """ - class name: Foo @@ -904,7 +903,7 @@ class ClassPrinterTest { assertEquals(node.walk().count(), 42); } - private static void assertOut(StringBuilder out, String expected) { + private static void assertOut(CharSequence out, String expected) { // System.out.println("-----------------"); // System.out.println(out.toString()); // System.out.println("-----------------");