/* * @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; } }); } }