On Tue, 9 Apr 2024 13:38:29 GMT, Jan Lahoda <jlah...@openjdk.org> wrote:
>> This is an implementation of JEP JDK-8315129: Module Import Declarations >> (Preview). Please see the JEP for details: >> https://bugs.openjdk.org/browse/JDK-8315129 >> >> It is mostly straightforward - the module imports are parsed, and then >> expanded to import-on-demand in `TypeEnter`. >> There is a few notable aspects, however: >> - the AST node for import (`JCImport`) is holding the imported element as a >> field access, because so far, the imported element always had to have a '.' >> (even for import-on-demand). But for module imports, it is permissible to >> import from a module whose name does not have a dot (`import module m;`). >> The use of field access for ordinary import seems very useful, so I >> preferred to keep that, and created a new internal-only AST node for module >> imports. There is still only one public API AST node/interface, so this is >> purely an implementation choice. >> - JShell now supports module imports as well; and the default, implicit, >> script is changed to use it to import all of `java.base` if preview is >> enabled. It is expected that the default would be changed if/when the module >> imports feature is finalized. > > Jan Lahoda has updated the pull request incrementally with one additional > commit since the last revision: > > Adding more tests for ambiguities. src/jdk.compiler/share/classes/com/sun/tools/javac/tree/JCTree.java line 719: > 717: public static class JCModuleImport extends JCImportBase { > 718: /** The module name. */ > 719: public JCExpression module; Does it need to be an expression? Or is a name enough? ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/18614#discussion_r1559303562