RFR: JDK-8187950: javax.lang.model APIs throws CompletionFailure or a subtype of CompletionFailure.
jan.lahoda at oracle.com
Mon Feb 12 12:43:24 UTC 2018
Currently, when a calling some API methods, the client (e.g.
TaskListener, an annotation Processor or a JavacTask client) may get a
CompletionFailure, if the given Symbol was not completed yet. This is
not only problematic for the clients, but if the client catches and
ignores the exception, the javac may be unable to report an appropriate
The proposed patch here:
-separates "user " and "javac" modes, in which CompletionFailure
handling differs a bit
-in javac mode, CompletionFailures should be handled as they are currently
-in user (code) mode, when a CompletionFailure is thrown (and would go
outside of an API method), the API method will suppress the exception,
and the Symbol's state (completer, kind, type) will be restored to
original when the mode is switched back to javac mode. If the Symbol is
then completed again inside javac, the CompletionFailure is thrown again
and the appropriate errors are reported.
How does this look?
More information about the compiler-dev