On 23.05.2017 22:12, Alex Buckley wrote:
On 5/23/2017 1:04 PM, Stephan Herrmann wrote:
The 2017-05-18 update of JLS 6.5.3.2 introduces the concept of
unique visibility, but still has this unchanged sentence:

"The package name Q.Id names a package that is the member named Id
   within the package named by Q."

If "the" in "the member named Id" is to be taken literally, then
the specification still doesn't work, as I may elaborate if needed.
But I assume, dropping "the" in favor of "a" or a similar change
easily fixes this to reflect the intention, right?

The full text is:

-----
If a package name is of the form Q.Id, then Q must also be a package name. The package name Q.Id names a package that is the member named Id within the package named by Q.

[DELETED]If Q does not name an observable package (§7.4.3), or Id is not the simple name of an observable subpackage of that package, then a compile-time error occurs.[/DELETED]

[ADDED]If Q.Id does not name a package that is uniquely visible to the current module (§7.4.3), then a compile-time error occurs.[/ADDED]
-----

The editorial style of this section has historically been rather odd, because the first paragraph makes assertions that are true only if the second paragraph's compile-time error doesn't occur. I have continued with that style in JLS9: the first paragraph can say "_the_ member named Id" because the second paragraph assures a unique Q.Id.

Alex


To tersely illustrate my confusion: "the" _could_ imply that the existence of 
several
packages named Q.Id forces separate parent packages Q, so that each Q indeed 
contains
exactly one member named Id.

From your mail I infer that this is not your intention.

I read you as saying: even a single package named Q can contain arbitrary many
member packages named Id, provided that (at the location of each package 
reference)
exactly one of those packages is visible (or a compile time error occurs), 
right?

Stephan

Reply via email to