RFR: 8356057: PrintingProcessor (-Xprint) does not print type variable bounds and type annotations for Object supertypes
Joe Darcy
darcy at openjdk.org
Fri May 2 19:52:47 UTC 2025
On Fri, 2 May 2025 11:37:40 GMT, Jan Lahoda <jlahoda at openjdk.org> wrote:
> Consider code like:
>
> import java.lang.annotation.*;
>
> public class PrintingTest<T extends CharSequence> extends @TA Object {
> }
>
> @Target(ElementType.TYPE_USE)
> @interface TA {}
>
>
> when using `-Xprint` to print this code, javac produces this:
>
> public class PrintingTest<T> {
>
> public PrintingTest();
> }
>
> @java.lang.annotation.Target({TYPE_USE})
> @interface TA {
> }
>
>
> Note the type variable is missing the bound, and the annotated supertype is missing. This PR proposes to change that to:
>
> public class PrintingTest<T extends java.lang.CharSequence> extends java.lang. at TA Object {
>
> public PrintingTest();
> }
>
> @java.lang.annotation.Target({TYPE_USE})
> @interface TA {
> }
>
>
> Please also review the CSR:
> https://bugs.openjdk.org/browse/JDK-8356058
> and the release note:
> https://bugs.openjdk.org/browse/JDK-8356062
src/jdk.compiler/share/classes/com/sun/tools/javac/processing/PrintingProcessor.java line 536:
> 534: tpe.getBounds()
> 535: .stream()
> 536: .filter(type -> !isUnimportantObjectType(type))
Perhaps the changes would be easier to ready if the method as "isImportantObjectType()"?
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/25002#discussion_r2072080138
More information about the compiler-dev
mailing list