| /* |
| * @test /nodynamiccopyright/ |
| * @bug 8312163 |
| * @summary Crash in dominance check when compiling unnamed patterns |
| * @enablePreview |
| * @compile/fail/ref=T8312163.out -XDrawDiagnostics T8312163.java |
| */ |
| public class T8312163 { |
| sealed interface A permits B {} |
| record B() implements A {} |
| |
| record Rec(A a, A b) {} |
| |
| public void test(Rec r) |
| { |
| switch (r) { |
| case Rec(_, _): break; |
| case Rec(_, B()): // dominated |
| } |
| |
| switch (r) { |
| case Rec(_, B()): break; |
| case Rec(_, _): |
| } |
| |
| switch (r) { |
| case Rec(_, _): break; |
| case Rec(_, A a): // dominated |
| } |
| |
| switch (r) { |
| case Rec(_, A a): break; |
| case Rec(_, _): // dominated |
| } |
| |
| // duplicated unnamed patterns with unnamed pattern variables for reference |
| switch (r) { |
| case Rec(var _, var _): break; |
| case Rec(var _, B()): // dominated |
| } |
| |
| switch (r) { |
| case Rec(var _, B()): break; |
| case Rec(var _, var _): |
| } |
| |
| switch (r) { |
| case Rec(var _, var _): break; |
| case Rec(var _, A a): // dominated |
| } |
| |
| switch (r) { |
| case Rec(var _, A a): break; |
| case Rec(var _, var _): // dominated |
| } |
| } |
| } |