<div dir="ltr"><div>Hi Jan,</div><div><br></div><div>I've run into the same problem a few times, and made some half-baked experiments around not caching completion failures [1]. The approach you describe sounds good to me. Also,</div><div><div>* this will fix JDK-8177436 [2] too</div><div>* there's a minor typo in the javadoc for DeferredCompletionFailureH<wbr>andler - "throw the the client code"<br></div></div><div><br></div><div><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration-style:initial;text-decoration-color:initial;background-color:rgb(255,255,255);float:none;display:inline">[1] </span><a href="http://mail.openjdk.java.net/pipermail/compiler-dev/2017-March/010883.html" class="m_4571143415463393745m_4703939707348298493gmail-m_-6973185364403339529gmail-cremed m_4571143415463393745m_4703939707348298493gmail-m_-6973185364403339529gmail-cremed m_4571143415463393745m_4703939707348298493gmail-m_-6973185364403339529cremed m_4571143415463393745m_4703939707348298493gmail-cremed m_4571143415463393745m_4703939707348298493cremed m_4571143415463393745cremed cremed" style="color:rgb(17,85,204);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255)" target="_blank">http://mail.openjdk.java.n<wbr>et/pipermail/compiler-dev/2017<wbr>-March/010883.html</a><br></div><div>[2] <a href="https://bugs.openjdk.java.net/browse/JDK-8177436" class="gmail-m_4571143415463393745m_4703939707348298493m_-6973185364403339529gmail-cremed gmail-m_4571143415463393745m_4703939707348298493m_-6973185364403339529gmail-cremed gmail-m_4571143415463393745m_4703939707348298493m_-6973185364403339529cremed gmail-m_4571143415463393745m_4703939707348298493cremed gmail-m_4571143415463393745cremed gmail-cremed cremed" target="_blank" style="color:rgb(17,85,204);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255)">https://bugs.openjdk.java.<wbr>net/browse/JDK-8177436</a></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Feb 12, 2018 at 4:43 AM, Jan Lahoda <span dir="ltr"><<a href="mailto:jan.lahoda@oracle.com" target="_blank">jan.lahoda@oracle.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi,<br>
<br>
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 error.<br>
<br>
The proposed patch here:<br>
-separates "user " and "javac" modes, in which CompletionFailure handling differs a bit<br>
-in javac mode, CompletionFailures should be handled as they are currently<br>
-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.<br>
<br>
Bug: <a href="https://bugs.openjdk.java.net/browse/JDK-8187950" rel="noreferrer" target="_blank">https://bugs.openjdk.java.net/<wbr>browse/JDK-8187950</a><br>
Webrev: <a href="http://cr.openjdk.java.net/~jlahoda/8187950/webrev.00/" rel="noreferrer" target="_blank">http://cr.openjdk.java.net/~jl<wbr>ahoda/8187950/webrev.00/</a><br>
<br>
How does this look?<br>
<br>
Thanks,<br>
    Jan<br>
</blockquote></div><br></div>