RFR: 8225003: NPE in Attr.attribIdentAsEnumType [v3]

Guoxiong Li gli at openjdk.java.net
Sat Jun 12 21:41:26 UTC 2021


> Hi all,
> 
> `Attr.attribIdentAsEnumType` uses `enclClass` which would return null if some error types and/or error symbols exist.
> 
> And if we use annotation processor, some errors would be reported to `deferredDiagnosticHandler` and not immediately reported to the users. At this time, the `NullPointerException`(NPE) occurs and all the other work, including that the `deferredDiagnosticHandler` report the errors to users, would not be done. So the user would see the NPE and see that the compiler crashes.
> 
> In other words, the NPE also occurs without the annotation processor. But because the `deferredDiagnosticHandler` is not set without the annotation processor, some other errors would be shown immediately to users and the NPE is not shown when using [these catch code](https://github.com/openjdk/jdk/blob/0849117d5c3a9ae12231262fc0d3366a6e8a458d/src/jdk.compiler/share/classes/com/sun/tools/javac/main/Main.java#L349).
> 
> This patch fixes the NPE and reports the deferred diagnostics to users at the end of the compilation task. Maybe you can consider that this patch solves two bugs:
> 
> 1. [JDK-8225003 NPE in Attr.attribIdentAsEnumType](https://bugs.openjdk.java.net/browse/JDK-8225003)
> 2. Some deferred diagnostics would be not reported to user when the compiler crashes.
> 
> The test case needs to fix these two bugs to pass, so I put them together.
> 
> Thank you for taking the time to review.
> 
> Best Regards.

Guoxiong Li has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains three commits:

 - Merge branch 'master' into JDK-8225003
   
   # Conflicts:
   #	src/jdk.compiler/share/classes/com/sun/tools/javac/main/JavaCompiler.java
 - Modify legal header.
 - 8225003: NPE in Attr.attribIdentAsEnumType

-------------

Changes: https://git.openjdk.java.net/jdk/pull/1864/files
 Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=1864&range=02
  Stats: 108 lines in 3 files changed: 105 ins; 1 del; 2 mod
  Patch: https://git.openjdk.java.net/jdk/pull/1864.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/1864/head:pull/1864

PR: https://git.openjdk.java.net/jdk/pull/1864


More information about the compiler-dev mailing list