RFR: 8306729: Add nominal descriptors of modules and packages to Constants API [v13]

Mandy Chung mchung at openjdk.org
Wed Apr 26 19:23:55 UTC 2023


On Wed, 26 Apr 2023 10:46:24 GMT, Adam Sotona <asotona at openjdk.org> 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:
> 
>   removed prefixes from name methods

I keep pondering if this API should allow creating `ModuleDesc` and `PackageDesc` with an empty name.  

JLS 6.5.3. Meaning of Module Names and Package Names
> The module name M, whether simple or qualified, denotes the module (if any) with that name.

The module system will reject a `CONSTANT_Module_info` of zero-length name while JVMS does not prohibit it.

The module system rejects the unnamed package in a named module.    `CONSTANT_Package_info` represents a package exported or opened by a module.

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

PR Comment: https://git.openjdk.org/jdk/pull/13615#issuecomment-1523914987


More information about the core-libs-dev mailing list