RFR: 8281100: Spurious "variable might not have been initialized" with sealed class switch
Jan Lahoda
jlahoda at openjdk.java.net
Thu Feb 10 12:48:08 UTC 2022
On Wed, 9 Feb 2022 23:03:11 GMT, Vicente Romero <vromero at openjdk.org> wrote:
> this test case is failing for me, I was expecting it to compile:
>
> ```
> sealed interface I permits A, B {}
>
> final class A implements I {}
>
> final class B implements I {}
>
> class Test {
> void m(I i) {
> int data;
> switch (i) {
> case A a -> data = 0;
> case B b -> data = 0;
> };
> System.err.println(data);
> }
> }
> ```
Hm, seems to work for me with this patch?
~/src/jdk/jdk (JDK-8281100) $ cat /tmp/Test.java
sealed interface I permits A, B {}
final class A implements I {}
final class B implements I {}
class Test {
void m(I i) {
int data;
switch (i) {
case A a -> data = 0;
case B b -> data = 0;
};
System.err.println(data);
}
}
~/src/jdk/jdk (JDK-8281100) $ ./build/linux-x86_64-server-release/jdk/bin/javac --enable-preview -source 19 /tmp/Test.java
Note: /tmp/Test.java uses preview features of Java SE 19.
Note: Recompile with -Xlint:preview for details.
~/src/jdk/jdk (JDK-8281100) $ git push origin JDK-8281100
Everything up-to-date
-------------
PR: https://git.openjdk.java.net/jdk/pull/7402
More information about the compiler-dev
mailing list