On Thu, 27 Apr 2023 13:17:58 GMT, Jim Laskey <jlas...@openjdk.org> 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