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