JDK 14 RFR of JDK-8230337: Clarify intention of Elements.{getPackageOf, getModuleOf}
Jonathan Gibbons
jonathan.gibbons at oracle.com
Fri Aug 30 04:16:13 UTC 2019
+1
-- Jon
On 8/29/19 4:45 PM, Joe Darcy wrote:
> 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