On Fri, 16 Oct 2020 15:20:03 GMT, Jan Lahoda <jlah...@openjdk.org> wrote:

> This is an update to javac and javadoc, to introduce support for Preview 
> APIs, and generally improve javac and javadoc
> behavior to more closely adhere to JEP 12.
> The notable changes are:
> 
>  * adding support for Preview APIs (javac until now supported primarily only 
> preview language features, and APIs
>    associated with preview language features). This includes:
>      * the @PreviewFeature annotation has boolean attribute "reflective", 
> which should be true for reflective Preview APIs,
>        false otherwise. This replaces the existing "essentialAPI" attribute 
> with roughly inverted meaning.
>      * the preview warnings for preview APIs are auto-suppressed as described 
> in the JEP 12. E.g. the module that declares the
>        preview API is free to use it without warnings
>  * improving error/warning messages. Please see [1] for a list of 
> cases/examples.
>  * class files are only marked as preview if they are using a preview 
> feature. [1] also shows if a class file is marked as
>    preview or not.
>  * the PreviewFeature annotation has been moved to jdk.internal.javac package 
> (originally was in the jdk.internal package).
>  * Preview API in JDK's javadoc no longer needs to specify @preview tag in 
> the source files. javadoc will auto-generate a
>    note for @PreviewFeature elements, see e.g. [2] and [3] (non-reflective 
> and reflective API, respectively). A summary of
>    preview elements is also provided [4]. Existing uses of @preview have been 
> updated/removed.
>  * non-JDK javadoc is also enhanced to auto-generate preview notes for uses 
> of Preview elements, and for declaring
>    elements using preview language features [5].
>  
>  Please also see the CSR [6] for more information.
>  
>  [1] http://cr.openjdk.java.net/~jlahoda/8250768/JEP12-errors-warnings-v6.html
>  [2] 
> http://cr.openjdk.java.net/~jlahoda/8250768/jdk.javadoc.00/api/java.base/java/lang/Record.html
>  [3]
>  
> http://cr.openjdk.java.net/~jlahoda/8250768/jdk.javadoc.00/api/java.compiler/javax/lang/model/element/RecordComponentElement.html
>  [4] 
> http://cr.openjdk.java.net/~jlahoda/8250768/jdk.javadoc.00/api/preview-list.html
>  [5]
>  http://cr.openjdk.java.net/~jlahoda/8250768/test.javadoc.00/ [6] 
> https://bugs.openjdk.java.net/browse/JDK-8250769

I've done a quick pass over the javac changes, things look good, apart from 
some (minor) comments.

I'm a bit worried about the scalability of the output in this page:

http://cr.openjdk.java.net/~jlahoda/8250768/test.javadoc.00/use/Factory.html

E.g. if the types which use preview features are a lot (e.g. 50), what would 
the text inside the black box look like?

src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Enter.java line 108:

> 106:     Modules modules;
> 107:     JCDiagnostic.Factory diags;
> 108:     Preview preview;

Are these changes spurious?

src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Check.java line 3565:

> 3563:         }
> 3564:     }
> 3565:     private boolean declaredUsingPreviewFeature(Symbol sym) {

I wonder, maybe this routine should go in Preview.java?

src/jdk.compiler/share/classes/com/sun/tools/javac/parser/JavacParser.java line 
2649:

> 2647:         }
> 2648:         if (isRecordStart() && allowRecords) {
> 2649:             checkSourceLevel(Feature.RECORDS);

Is this change really related to the JEP 12?

src/jdk.compiler/share/classes/com/sun/tools/javac/parser/JavacParser.java line 
3713:

> 3711:             return classDeclaration(mods, dc);
> 3712:         } if (isRecordStart()) {
> 3713:              checkSourceLevel(Feature.RECORDS);

Same here

src/jdk.compiler/share/classes/com/sun/tools/javac/util/RawDiagnosticFormatter.java
 line 166:

> 164:             s = "compiler.misc.tree.tag." + 
> StringUtils.toLowerCase(((Tag) arg).name());
> 165:         } else if (arg instanceof Source && arg == Source.DEFAULT &&
> 166:                 
> CODES_NEEDING_SOURCE_NORMALIZATION.contains(diag.getCode())) {

Nice trick to keep raw output constant across versions :-)

-------------

PR: https://git.openjdk.java.net/jdk/pull/703

Reply via email to