On Mon, 24 Apr 2023 16:26:02 GMT, Adam Sotona <[email protected]> wrote:
>> Constants API already provides models for all loadable constants to help
>> programs manipulating class files and modelling bytecode instructions.
>> However no models of module and package constants are provided by Constants
>> API. Every program manipulating class files must implement own models and
>> validation of modules and packages constants.
>>
>> This pul request adds `java.lang.constant.ModuleDesc` and
>> `java.lang.constant.PackageDesc` to the Constants API.
>>
>> Classfile API will follow up and remove its internal implementations of
>> `PackageDesc` and `ModuleDesc`.
>>
>> Please review this pull request and attached CSR.
>>
>> Thank you,
>> Adam
>
> Adam Sotona has updated the pull request incrementally with one additional
> commit since the last revision:
>
> Doc fixes + added null and empty tests
src/java.base/share/classes/java/lang/constant/ModuleDesc.java line 30:
> 28:
> 29: /**
> 30: * A nominal descriptor for a {@code Module} constant {@jvms 4.4.11}.
This inlined link looks a bit awkward in the output.
I suggest to move `{@jvms 4.4.11}` as see also section before `@since 21`. See
the suggestion below
src/java.base/share/classes/java/lang/constant/ModuleDesc.java line 32:
> 30: * A nominal descriptor for a {@code Module} constant {@jvms 4.4.11}.
> 31: *
> 32: * <p>To create a {@linkplain ModuleDesc} for a module, use {@link #of}.
Suggestion:
* <p>To create a {@linkplain ModuleDesc} for a module, use the {@link #of}
method.
src/java.base/share/classes/java/lang/constant/ModuleDesc.java line 34:
> 32: * <p>To create a {@linkplain ModuleDesc} for a module, use {@link #of}.
> 33: *
> 34: * @since 21
Suggestion:
* @jvms 4.4.11 The CONSTANT_Module_info Structure
* @since 21
src/java.base/share/classes/java/lang/constant/ModuleDesc.java line 43:
> 41: * given the name of the module.
> 42: *
> 43: * <p>{@jvms 4.2.3} Module names are not encoded in "internal form"
> like
I would avoid copying JVMS 4.2.3 into the javadoc as it might become
out-of-sync. In addition, adding `@jvms 4.2.3 Module and Package Names` in the
see also section should be adequate (like the javadoc of
`ClassDesc::ofInternalName`).
src/java.base/share/classes/java/lang/constant/PackageDesc.java line 30:
> 28:
> 29: /**
> 30: * A nominal descriptor for a {@code Package} constant {@jvms 4.4.12}.
I suggest to move `{@jvms 4.4.12}` as see also section before `@since 21`. See
the suggestion below
src/java.base/share/classes/java/lang/constant/PackageDesc.java line 35:
> 33: * {@link #ofInternalName(String)}.
> 34: *
> 35: * @since 21
Suggestion:
* * @jvms 4.4.11 The CONSTANT_Module_info Structure
* @since 21
The output javadoc will show `See Java Virtual Machine Specification:`
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/13615#discussion_r1175818650
PR Review Comment: https://git.openjdk.org/jdk/pull/13615#discussion_r1175830777
PR Review Comment: https://git.openjdk.org/jdk/pull/13615#discussion_r1175819238
PR Review Comment: https://git.openjdk.org/jdk/pull/13615#discussion_r1175822059
PR Review Comment: https://git.openjdk.org/jdk/pull/13615#discussion_r1175774209
PR Review Comment: https://git.openjdk.org/jdk/pull/13615#discussion_r1175774600