| /* | |
| * @test | |
| * @bug 8168480 | |
| * @summary Speculative attribution of lambda causes NPE in Flow | |
| * @compile T8168480.java | |
| */ | |
| import java.util.function.Supplier; | |
| class T8168480 { | |
| void f(Runnable r) { } | |
| void s(Supplier<Runnable> r) { } | |
| private void testVoid(boolean cond) { | |
| f(() -> | |
| new Runnable() { | |
| public void run() { | |
| switch (42) { | |
| default: | |
| break; | |
| } | |
| } | |
| }.run()); | |
| f(() -> | |
| f(() -> { | |
| switch (42) { | |
| default: | |
| break; | |
| } | |
| })); | |
| f(() -> { | |
| if (cond) { | |
| new Runnable() { | |
| public void run() { | |
| switch (42) { | |
| default: | |
| break; | |
| } | |
| } | |
| }.run(); | |
| } else { | |
| f(() -> { | |
| switch (42) { | |
| default: | |
| break; | |
| } | |
| }); | |
| } | |
| }); | |
| } | |
| private void testReturn(boolean cond) { | |
| s(() -> | |
| new Runnable() { | |
| public void run() { | |
| switch (42) { | |
| default: | |
| break; | |
| } | |
| } | |
| }); | |
| s(() -> | |
| () -> { | |
| switch (42) { | |
| default: | |
| break; | |
| } | |
| }); | |
| s(() -> { | |
| if (cond) { | |
| return new Runnable() { | |
| public void run() { | |
| switch (42) { | |
| default: | |
| break; | |
| } | |
| } | |
| }; | |
| } else { | |
| return () -> { | |
| switch (42) { | |
| default: | |
| break; | |
| } | |
| }; | |
| } | |
| }); | |
| s(() -> { | |
| return cond ? | |
| new Runnable() { | |
| public void run() { | |
| switch (42) { | |
| default: | |
| break; | |
| } | |
| } | |
| } : () -> { | |
| switch (42) { | |
| default: | |
| break; | |
| } | |
| }; | |
| }); | |
| s(() -> cond ? | |
| new Runnable() { | |
| public void run() { | |
| switch (42) { | |
| default: | |
| break; | |
| } | |
| } | |
| } : () -> { | |
| switch (42) { | |
| default: | |
| break; | |
| } | |
| }); | |
| } | |
| } |