java-topology/test/langtools/tools/javac/patterns/NullsInDeconstructionPatterns.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

34 lines
966 B
Java

/*
* @test /nodynamiccopyright/
* @summary Testing record patterns against the null constant (14.30.2 Pattern Matching)
*/
public class NullsInDeconstructionPatterns {
class Super {}
class Sub extends Super {}
record R(Super s) {}
public static void main(String[] args) {
R r = new R(null);
if (r instanceof R(Super s1)) {
System.out.println("R(Super s1) is resolved to the R(any pattern) and does match");
} else {
throw new AssertionError("broken");
}
if (r instanceof R(Object o)) {
System.out.println("R(Object) is resolved to the R(any pattern) and does match");
} else {
throw new AssertionError("broken");
}
if (r instanceof R(Sub s2)) {
throw new AssertionError("broken");
} else {
System.out.println("R(Sub s2) is resolved to the pattern R(Sub s) and does not match");
}
}
}