RFR: JDK-8198315: Incomplete classpath causes NPE in TransTypes (original) (raw)

Jan Lahoda jan.lahoda at oracle.com
Fri May 18 11:02:25 UTC 2018


Hi,

Bug: https://bugs.openjdk.java.net/browse/JDK-8198315

The issue here is that while reporting an error, a missing symbol is completed, which then throws CompletionFailure. This CF is caught and there's an attempt to report it as an error as well, but as it has the same coordinates as the original report, it is skipped as a duplicate. So, in the end, neither of these errors gets reported, and the compilation continues to backend and javac crashes later.

There are multiple directions for a solution possible, I think: a) catch and handle the CFs while reporting the error. I tried to implement that, but catching the CompletionFailures inside RichDiagnosticFormatter didn't seem like a nice solution. b) make sure the CF throw while reporting the error is reported (by e.g. recording the coordinates after error reporting. But in this case, this would lead to a worse error messages, so it would be better to avoid this option. c) prevent completing the symbol while reporting the error. This is what the proposed patch is trying to do.

Webrev: http://cr.openjdk.java.net/~jlahoda/8198315/webrev.00/

What do you think?

Thanks, Jan



More information about the compiler-dev mailing list