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