switch expression type with 'null' return expression

Maurizio Cimadamore maurizio.cimadamore at oracle.com
Fri Oct 9 09:46:37 UTC 2020


Filed this:

https://bugs.openjdk.java.net/browse/JDK-8254286

Maurizio

On 09/10/2020 10:42, Maurizio Cimadamore wrote:
>
> Hi Anna,
> yes, this looks like a compiler bug.
>
> Behavior should be the same as:
>
> <Z> Z pick(Z z1, Z z2, Z z3) { .... }
>
> pick(i1, null, i2)
>
> --> lub(I1, I2) --> I
>
> Seems like the `null` is tripping javac up
>
> Maurizio
>
> On 30/09/2020 10:50, Anna Kozlova wrote:
>> Hi all,
>>
>> The following code doesn't compile (infers i_ to Object)
>> interface I {
>>      void m();
>> }
>> interface I1 extends I {}
>> interface I2 extends I {}
>>
>> static void n(I1 i1,I2 i2,int s) {
>>      var i_ =switch (s) {
>>          case 1 -> i1;
>>          case 2 ->null;
>>          default -> i2;
>>      };
>>      if (i_ !=null) {
>>          i_.m(); //cannot find symbol m()
>>      }
>> }
>>
>> If you permute "case 1" and "case 2" switch rules, the code starts to 
>> compile (infers i_ to I).
>>
>> Looks like a bug?
>>
>> Thanks,
>> Anna
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.java.net/pipermail/compiler-dev/attachments/20201009/1f1fa360/attachment.htm>


More information about the compiler-dev mailing list