RFR 8210483: AssertionError in DeferredAttr at setOverloadKind caused by JDK-8203679

Vicente Romero vicente.romero at oracle.com
Wed Sep 12 12:13:23 UTC 2018


looks good to me too,
Vicente

On 09/11/2018 07:06 PM, Liam Miller-Cushon wrote:
> On Tue, Sep 11, 2018 at 12:51 AM Maurizio Cimadamore 
> <maurizio.cimadamore at oracle.com 
> <mailto:maurizio.cimadamore at oracle.com>> wrote:
>
>     What you did looks sensible - I'm not sure we've seen the end of
>     it though; the issue is that there are clients that rely on this
>     value:
>
>     http://hg.openjdk.java.net/jdk/jdk/file/tip/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/DeferredAttr.java#l1308
>
>     So if that value changes from OVERLOAD to ERROR, a method
>     reference would (e.g. in this case) not considered as 'stuck'.
>     That means that we would attempt to type-check it during overload
>     resolution in Attr. This is not a big deal (Attr will simply end
>     up with an erroneous type), but it kind of gives an idea of the
>     hidden scope of the change here.
>
>     At the very least I would try to also fix the Overload and
>     CheckStuckPolicy in DeferredAttr to take the new enum constant
>     into account so that en ERROR overload kind is effectively treated
>     as OVERLOAD for the purpose of stuck analysis. That should
>     minimize impact.
>
> I might be missing something, but I tried to update all uses I found 
> of the enum. E.g. for the use you linked to in DeferredAttr:
>
> - if (tree.getOverloadKind() == 
> JCMemberReference.OverloadKind.OVERLOADED) {
> + if (tree.getOverloadKind() != 
> JCMemberReference.OverloadKind.UNOVERLOADED) {
>
> (see: 
> http://cr.openjdk.java.net/~cushon/8210483/webrev.00/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/DeferredAttr.java.sdiff.html 
> <http://cr.openjdk.java.net/%7Ecushon/8210483/webrev.00/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/DeferredAttr.java.sdiff.html>)
>
> So we should be treating method references as stuck unless they're 
> specifically UNOVERLOADED, which seems consistent with the previous 
> behaviour.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/compiler-dev/attachments/20180912/069c13f1/attachment.html>


More information about the compiler-dev mailing list