java-topology/test/langtools/tools/javac/lambda/8168480/T8168480.java
russell@unturf.com 0a580b313d undefect. CWE-407 — 63 sites patched across 27 ecosystems
Authors: russell@unturf.com · brackishbert@gmail.com · foxhop.net · TimeHexOn.com

Patches, unit tests, benchmarks, whitepaper, and outreach briefs.
Public domain — no copyright claimed. Use freely.
2026-03-26 17:11:57 -04:00

125 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;
}
});
}
}