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