On Thu, 27 Apr 2023 13:17:58 GMT, Jim Laskey <[email protected]> wrote:
>> Add flexible main methods and anonymous main classes to the Java language.
>
> Jim Laskey has updated the pull request incrementally with one additional
> commit since the last revision:
>
> PreviewFeatures.isEnabled()
src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Enter.java line 432:
> 430:
> 431: // Restructure top level to be an top level anonymous class.
> 432: public static void constructAnonymousMainClass(JCCompilationUnit
> tree,
Question: any reason as to why this is done here and not in the parser?
Typically we don't want to do tree transformation at parse time, as that messes
up clients that want to access the "non-desugared" tree (such as IDE) and
expect some mapping between source to AST. But if you do the rewriting in
Enter, not much changes, that is, clients such as IDEs would still see
something that doesn't resemble the source.
src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Resolve.java line 2433:
> 2431: if (kind.contains(KindSelector.TYP)) {
> 2432: sym = findType(env, name);
> 2433: if ((sym.flags() & ANONYMOUS_MAIN_CLASS) != 0) {
If `sym` is also `SYNTHTIC` (which it is) - do you need this? In what case?
E.g. if there's a legitimate case for this I'm wondering if we should just test
for `SYNTHETIC` rather than `ANONYMOUS_MAIN_CLASS`.
src/jdk.compiler/share/classes/com/sun/tools/javac/parser/VirtualParser.java
line 191:
> 189: * @param <E> return type of parserAction
> 190: */
> 191: public static <E> Optional<E> speculativeParse(JavacParser parser,
Since this is never use, and because of the TODO - should we just drop it for
the time being?
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/13689#discussion_r1179286118
PR Review Comment: https://git.openjdk.org/jdk/pull/13689#discussion_r1179288860
PR Review Comment: https://git.openjdk.org/jdk/pull/13689#discussion_r1179292509