RFR: JDK-8283730: Improve discussion of modeling of packages and modules
Alex Buckley
alex.buckley at oracle.com
Mon Mar 28 16:08:18 UTC 2022
On 3/27/2022 8:57 PM, Joe Darcy wrote:
> Plain text update to PackageElement:
>
> The represented package may have an explicit source code or executable output backing construct or may be created from implicit information. The explicit source code construct for a package is typically a package-info.java file (JLS 7.4.1). Implicit information is used to model unnamed packages as well as named packages without explicit declarations.
For readability, prefer "may have an explicit backing construct (either
source code or executable output) or may be created from implicit ...".
The word "output" is a little strange in this context, since we're not
discussing a compiler. You wouldn't look at a class file on a production
system and call it "executable _output_". Alternative phrasing: "(in
either source or binary form)" or "(either source code or a class file)".
> Plain text update to ModuleElement:
>
> The represented module may have an explicit source code or executable output backing construct or may be created from implicit information. The explicit source code construct for a module is typically a module-info.java file (JLS 7.7). Implicit information is used to model unnamed modules.
Just as PackageElement spoke of "named packages without explicit
declarations", ModuleElement should appeal to the same idea: "... to
model unnamed modules and automatic modules".
(Background info: JLS 7.7.1 notes that "The Java SE Platform
distinguishes between named modules that are explicitly declared (that
is, with a module declaration) and named modules that are implicitly
declared (that is, automatic modules)." The specific platform spec where
automatic modules are first class is java.lang.module.ModuleFinder::of.)
Wait, what are "named packages without explicit declarations"?
Alex
More information about the compiler-dev
mailing list