JDK 14 RFR of JDK-8230337: Clarify intention of Elements.{getPackageOf, getModuleOf}
Joe Darcy
joe.darcy at oracle.com
Thu Aug 29 23:45:59 UTC 2019
Hi Jon,
For getModuleOf, how about:
/**
* Returns the module of an element. The module of a module is
* itself.
*
* If a package has a module as its {@linkplain
* PackageElement#getEnclosingElement enclosing element}, that
* module is the module of the package. If the enclosing element
* of a package is {@code null}, {@code null} is returned for the
* package's module.
*
* (One situation where a package may have a {@code null} module
* is if the environment does not include modules, such as an
* annotation processing environment configured for a {@linkplain
* javax.annotation.processing.ProcessingEnvironment#getSourceVersion
* source version} without modules.)
*
* Otherwise, the module of an element is equal to the module
* {@linkplain #getPackageOf(Element) of the package} of the
* element.
*
* @implSpec The default implementation of this method returns
* {@code null}.
*
* @param e the element being examined
* @return the module of an element
* @since 9
* @spec JPMS
*/
default ModuleElement getModuleOf(Element e)
-Joe
On 8/29/2019 2:05 PM, Jonathan Gibbons wrote:
> Joe,
>
> The if-otherwise doesn't work here as you might have intended.
>
> If the package doesn't have a module for its enclosing element you
> fall into infinitely recursive "otherwise".
>
> -- Jon
>
> On 8/29/19 11:30 AM, Joe Darcy wrote:
>>
>> + * If a package has a module as its {@linkplain
>> + * PackageElement#getEnclosingElement enclosing element}, that
>> + * module is the module of the package. Otherwise, the module of
>> + * an element is equal to the module {@linkplain
>> + * #getPackageOf(Element) of the package} of the element.
>> + *
More information about the compiler-dev
mailing list