langtools/test/jdk/jshell/CompletenessTest.java
changeset 40771 bf0e92ede33f
parent 38835 37280d52d723
child 41450 83877f4dd010
equal deleted inserted replaced
40770:dfccc36b61b6 40771:bf0e92ede33f
    21  * questions.
    21  * questions.
    22  */
    22  */
    23 
    23 
    24 /*
    24 /*
    25  * @test
    25  * @test
    26  * @bug 8149524 8131024
    26  * @bug 8149524 8131024 8165211 8080071 8130454
    27  * @summary Test SourceCodeAnalysis
    27  * @summary Test SourceCodeAnalysis
    28  * @build KullaTesting TestingInputStream
    28  * @build KullaTesting TestingInputStream
    29  * @run testng CompletenessTest
    29  * @run testng CompletenessTest
    30  */
    30  */
    31 
    31 
    61         "try { } finally { }",
    61         "try { } finally { }",
    62         "try (java.util.zip.ZipFile zf = new java.util.zip.ZipFile(zipFileName)) { }",
    62         "try (java.util.zip.ZipFile zf = new java.util.zip.ZipFile(zipFileName)) { }",
    63         "foo: while (true) { printf(\"Innn\"); break foo; }",
    63         "foo: while (true) { printf(\"Innn\"); break foo; }",
    64         "class Case<E1 extends Enum<E1>, E2 extends Enum<E2>, E3 extends Enum<E3>> {}",
    64         "class Case<E1 extends Enum<E1>, E2 extends Enum<E2>, E3 extends Enum<E3>> {}",
    65         ";",
    65         ";",
       
    66         "enum Tt { FOO, BAR, BAZ,; }"
    66     };
    67     };
    67 
    68 
    68     static final String[] expression = new String[] {
    69     static final String[] expression = new String[] {
    69         "test",
    70         "test",
    70         "x + y",
    71         "x + y",
    75         "new C() { public String toString() { return \"Hi\"; } }",
    76         "new C() { public String toString() { return \"Hi\"; } }",
    76         "new int[]",
    77         "new int[]",
    77         "new int[] {1, 2,3}",
    78         "new int[] {1, 2,3}",
    78         "new Foo() {}",
    79         "new Foo() {}",
    79         "i >= 0 && Character.isWhitespace(s.charAt(i))",
    80         "i >= 0 && Character.isWhitespace(s.charAt(i))",
       
    81         "int.class",
       
    82         "String.class",
    80     };
    83     };
    81 
    84 
    82     static final String[] complete_with_semi = new String[] {
    85     static final String[] complete_with_semi = new String[] {
    83         "int mm",
    86         "int mm",
    84         "if (t) ddd",
    87         "if (t) ddd",
   111         "C c = new C()",
   114         "C c = new C()",
   112         "java.util.zip.ZipFile zf = new java.util.zip.ZipFile(zipFileName)",
   115         "java.util.zip.ZipFile zf = new java.util.zip.ZipFile(zipFileName)",
   113         "BufferedReader br = new BufferedReader(new FileReader(path))",
   116         "BufferedReader br = new BufferedReader(new FileReader(path))",
   114         "bar: g()",
   117         "bar: g()",
   115         "baz: while (true) if (t()) printf('-'); else break baz",
   118         "baz: while (true) if (t()) printf('-'); else break baz",
       
   119         "java.util.function.IntFunction<int[]> ggg = int[]::new",
   116     };
   120     };
   117 
   121 
   118     static final String[] considered_incomplete = new String[] {
   122     static final String[] considered_incomplete = new String[] {
   119         "if (t)",
   123         "if (t)",
   120         "if (t) { } else",
   124         "if (t) { } else",
   139         "if (t) if (",
   143         "if (t) if (",
   140         "if (stack.isEmpty()) {",
   144         "if (stack.isEmpty()) {",
   141         "if (match.kind == BRACES && (prevCT.kind == ARROW || prevCT.kind == NEW_MIDDLE)) {",
   145         "if (match.kind == BRACES && (prevCT.kind == ARROW || prevCT.kind == NEW_MIDDLE)) {",
   142         "if (match.kind == BRACES && (prevCT.kind == ARROW || prevCT.kind == NEW_MIDDLE)) { new CT(UNMATCHED, current, \"Unmatched \" + unmatched);",
   146         "if (match.kind == BRACES && (prevCT.kind == ARROW || prevCT.kind == NEW_MIDDLE)) { new CT(UNMATCHED, current, \"Unmatched \" + unmatched);",
   143         "x +",
   147         "x +",
       
   148         "x *",
       
   149         "3 *",
   144         "int",
   150         "int",
   145         "for (int i = 0; i < lines.length(); ++i) {",
   151         "for (int i = 0; i < lines.length(); ++i) {",
   146         "new",
   152         "new",
   147         "new C(",
   153         "new C(",
   148         "new int[",
   154         "new int[",
   154         "while (ct == null) { switch (current.kind) { case EOF: { } }",
   160         "while (ct == null) { switch (current.kind) { case EOF: { } }",
   155         "enum TK {",
   161         "enum TK {",
   156         "enum TK { EOF(TokenKind.EOF, 0),",
   162         "enum TK { EOF(TokenKind.EOF, 0),",
   157         "enum TK { EOF(TokenKind.EOF, 0), NEW_MIDDLE(XEXPR1|XTERM)",
   163         "enum TK { EOF(TokenKind.EOF, 0), NEW_MIDDLE(XEXPR1|XTERM)",
   158         "enum TK { EOF(TokenKind.EOF, 0), NEW_MIDDLE(XEXPR1|XTERM); ",
   164         "enum TK { EOF(TokenKind.EOF, 0), NEW_MIDDLE(XEXPR1|XTERM); ",
       
   165         "enum Tt { FOO, BAR, BAZ,;"
   159     };
   166     };
   160 
   167 
   161     static final String[] unknown = new String[] {
   168     static final String[] unknown = new String[] {
   162         "new ;"
   169         "new ;"
   163     };
   170     };