diff --git a/src/jdk.compiler/share/classes/com/sun/tools/javac/main/JavaCompiler.java b/src/jdk.compiler/share/classes/com/sun/tools/javac/main/JavaCompiler.java index 1b8b7077ed8..09f40a56a85 100644 --- a/src/jdk.compiler/share/classes/com/sun/tools/javac/main/JavaCompiler.java +++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/main/JavaCompiler.java @@ -1305,7 +1305,7 @@ public class JavaCompiler { log.printVerbose("checking.attribution", env.enclClass.sym); if (!taskListener.isEmpty()) { - TaskEvent e = new TaskEvent(TaskEvent.Kind.ANALYZE, env.toplevel, env.enclClass.sym); + TaskEvent e = newAnalyzeTaskEvent(env); taskListener.started(e); } @@ -1390,12 +1390,30 @@ public class JavaCompiler { } finally { if (!taskListener.isEmpty()) { - TaskEvent e = new TaskEvent(TaskEvent.Kind.ANALYZE, env.toplevel, env.enclClass.sym); + TaskEvent e = newAnalyzeTaskEvent(env); taskListener.finished(e); } } } + private TaskEvent newAnalyzeTaskEvent(Env env) { + JCCompilationUnit toplevel = env.toplevel; + ClassSymbol sym; + if (env.enclClass.sym == syms.predefClass) { + if (TreeInfo.isModuleInfo(toplevel)) { + sym = toplevel.modle.module_info; + } else if (TreeInfo.isPackageInfo(toplevel)) { + sym = toplevel.packge.package_info; + } else { + throw new IllegalStateException("unknown env.toplevel"); + } + } else { + sym = env.enclClass.sym; + } + + return new TaskEvent(TaskEvent.Kind.ANALYZE, toplevel, sym); + } + /** * Prepare attributed parse trees, in conjunction with their attribution contexts, * for source or code generation.