> Please review this PR to support _JEP 463 Implicitly Declared Classes and 
> Instance Main Method (Second Preview)_ in JavaDoc.
> 
> [JEP 463](https://openjdk.org/jeps/463) is the next iteration of [JEP 
> 445](https://openjdk.org/jeps/445), which introduced the ability to have a 
> source file as a launchable, "classless" method bag
> 
> 
> % cat HelloWorld.java
> /** Run me. */
> void main() {
>     print("Hello, world!");
> }
> 
> /** Shortcut for printing strings. */
> void print(String arg) {
>     System.out.println(arg);
> }
> 
> 
> which the compiler interprets as a familiar class
> 
> 
> final class HelloWorld {
> 
>     HelloWorld() {
>     }
> 
>     /** Run me. */
>     void main() {
>         print("Hello, world!");
>     }
> 
>     /** Shortcut for printing strings. */
>     void print(String arg) {
>         System.out.println(arg);
>     }    
> }
> 
> 
> ### How JEP 445 works with JavaDoc today
> 
> In JDK 21, javadoc can document such a file **without any changes to the 
> javadoc tool**. The only thing that the user needs to do is to make sure that 
> the following options are present:
> 
> * `--enable-preview` and `--source=21`
> * `-package`
> 
> The first pair of options tells javadoc to use preview features, which JEP 
> 445 is one of. Without these preview-related options, javadoc will raise the 
> following error:
> 
> 
> % javadoc --version
> javadoc 21
> 
> % javadoc HelloWorld.java -d /tmp/throwaway
> Loading source file HelloWorld.java...
> HelloWorld.java:2: error: unnamed classes are a preview feature and are 
> disabled by default.
> void main() {
> ^
>   (use --enable-preview to enable unnamed classes)
> 1 error
> 
> 
> The second option, `-package`, tells javadoc to document classes that are 
> public, protected, or declared with package access (colloquially known as 
> "package private"). Without this option, javadoc will only document public 
> and protected classes, which do not include the interpreted class:
> 
> 
> % javadoc --enable-preview --source=21 HelloWorld.java -d /tmp/throwaway
> Loading source file HelloWorld.java...
> Constructing Javadoc information...
> error: No public or protected classes found to document.
> 1 error
> 
> 
> When those additional options are present, javadoc does its job:
> 
> 
> % javadoc --enable-preview --source=21 -package HelloWorld.java -d 
> /tmp/throwaway
> Loading source file HelloWorld.java...
> Constructing Javadoc information...
> Creating destination directory: "/tmp/throwaway/"
> Building index for all the packages and classes...
> Standard Doclet version 21+35-LTS-2513
> Building tree for all the packages and classes...
> Generating /tmp/throwaway/HelloWorld.htm...

Pavel Rappo has updated the pull request incrementally with two additional 
commits since the last revision:

 - Remove ugly dependency on Utils
 - Improve test

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

Changes:
  - all: https://git.openjdk.org/jdk/pull/16853/files
  - new: https://git.openjdk.org/jdk/pull/16853/files/2fdaad54..3702638f

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jdk&pr=16853&range=03
 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=16853&range=02-03

  Stats: 45 lines in 5 files changed: 15 ins; 23 del; 7 mod
  Patch: https://git.openjdk.org/jdk/pull/16853.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/16853/head:pull/16853

PR: https://git.openjdk.org/jdk/pull/16853

Reply via email to