3789983e89
Reviewed-by: darcy, ihse
126 lines
3.1 KiB
Java
126 lines
3.1 KiB
Java
/*
|
|
* @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;
|
|
}
|
|
});
|
|
}
|
|
}
|