On Thu, 27 Apr 2023 18:28:41 GMT, Jim Laskey <jlas...@openjdk.org> wrote:
>> 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. > > The source file name is not available until after parsing. I see that logic in JavaCompiler - I wonder if that's just the way it is, or if there's a deeper reason as to why the sourcefile is set on the toplevel unit *after* parsing (I don't think I can see any, in which case that might be changed if that makes the rest of the code simpler). @lahodaj what do you think? ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/13689#discussion_r1179650628