RFR (14): JDK-8236546: Yield with boolean expression and Object target type crashes javac.

Maurizio Cimadamore maurizio.cimadamore at oracle.com
Wed Jan 8 12:34:36 UTC 2020


Looks good

Maurizio

On 08/01/2020 12:30, Jan Lahoda wrote:
> Code like this crashes javac in Flow:
>
> Object o = switch (s) { default -> s != null && s == s; };
>
> The reason is that "s != null && s == s" will use split "when true" 
> and "when false" (un/)initialized variables masks. But as the target 
> type is not boolean, the merged (un/)initialized masks are needed. The 
> real mistake is in using "scan" instead of "scanExpr" (which e.g. 
> visitReturn does), so the proposal is to use "scanExpr" instead of 
> "scan".
>
> Proposed patch:
> http://cr.openjdk.java.net/~jlahoda/8236546/webrev.00/
>
> JBS: https://bugs.openjdk.java.net/browse/JDK-8236546
>
> How does this look?
>
> Thanks,
>      Jan


More information about the compiler-dev mailing list