On 5/23/2017 12:54 PM, Stephan Herrmann wrote:
The 2017-05-18 draft of JLS indicates that automatic modules are beyond the
scope of JLS.
I'm puzzled what that should mean for a compiler.
At face value it seems to say that compilers need not care about automatic
modules. Instead I'd expect JLS to state that the host system must be able
to discover automatic modules "as if by invocation of
ModuleFinder.of(Path...)." or similar.
Which is it?
Can you quote the text of concern?
Automatic modules are not a source artifact, so their specification is
found in the API portion of the JPMS spec rather than in the JLS. The
JLS has traditionally not specified how a compiler interprets non-source
artifacts, e.g., the JLS says nothing about whether the host system
understands a "class path" or that such a thing might identify
non-source artifacts like JAR files. The analog in the Java SE 9 era is
that it's up to a compiler to choose to support a thing called the
"module path" and to identify non-source artifacts on it; I do not see
how the JLS can say anything for that. Once a compiler has made the
choice, then the JPMS specifies that certain non-source artifacts must
be interpreted as automatic modules, at which point they're "just" named
modules that a modular compilation unit's 'requires' directive can refer to.
Alex