langtools/test/tools/javac/T8182747/BadAnnotationRegressionTest.java
author vromero
Thu, 29 Jun 2017 07:19:44 -0700
changeset 45753 567c159ce16f
permissions -rw-r--r--
8182747: javac crashes on bad annotation value Reviewed-by: mcimadamore
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
45753
567c159ce16f 8182747: javac crashes on bad annotation value
vromero
parents:
diff changeset
     1
/* @test /nodynamiccopyright/
567c159ce16f 8182747: javac crashes on bad annotation value
vromero
parents:
diff changeset
     2
 * @bug 8182747
567c159ce16f 8182747: javac crashes on bad annotation value
vromero
parents:
diff changeset
     3
 * @summary javac crashes on bad annotation value
567c159ce16f 8182747: javac crashes on bad annotation value
vromero
parents:
diff changeset
     4
 * @compile/fail/ref=BadAnnotationRegressionTest.out -XDrawDiagnostics BadAnnotationRegressionTest.java
567c159ce16f 8182747: javac crashes on bad annotation value
vromero
parents:
diff changeset
     5
 */
567c159ce16f 8182747: javac crashes on bad annotation value
vromero
parents:
diff changeset
     6
567c159ce16f 8182747: javac crashes on bad annotation value
vromero
parents:
diff changeset
     7
class BadAnnotationRegressionTest {
567c159ce16f 8182747: javac crashes on bad annotation value
vromero
parents:
diff changeset
     8
    @interface ClassAnno {
567c159ce16f 8182747: javac crashes on bad annotation value
vromero
parents:
diff changeset
     9
        Class<?> value();
567c159ce16f 8182747: javac crashes on bad annotation value
vromero
parents:
diff changeset
    10
    }
567c159ce16f 8182747: javac crashes on bad annotation value
vromero
parents:
diff changeset
    11
567c159ce16f 8182747: javac crashes on bad annotation value
vromero
parents:
diff changeset
    12
    @interface ArrayAnno {
567c159ce16f 8182747: javac crashes on bad annotation value
vromero
parents:
diff changeset
    13
        int[] value();
567c159ce16f 8182747: javac crashes on bad annotation value
vromero
parents:
diff changeset
    14
    }
567c159ce16f 8182747: javac crashes on bad annotation value
vromero
parents:
diff changeset
    15
567c159ce16f 8182747: javac crashes on bad annotation value
vromero
parents:
diff changeset
    16
    @interface PrimitiveAnno {
567c159ce16f 8182747: javac crashes on bad annotation value
vromero
parents:
diff changeset
    17
        int value();
567c159ce16f 8182747: javac crashes on bad annotation value
vromero
parents:
diff changeset
    18
    }
567c159ce16f 8182747: javac crashes on bad annotation value
vromero
parents:
diff changeset
    19
567c159ce16f 8182747: javac crashes on bad annotation value
vromero
parents:
diff changeset
    20
    @interface StringAnno {
567c159ce16f 8182747: javac crashes on bad annotation value
vromero
parents:
diff changeset
    21
        String value();
567c159ce16f 8182747: javac crashes on bad annotation value
vromero
parents:
diff changeset
    22
    }
567c159ce16f 8182747: javac crashes on bad annotation value
vromero
parents:
diff changeset
    23
567c159ce16f 8182747: javac crashes on bad annotation value
vromero
parents:
diff changeset
    24
    enum E {
567c159ce16f 8182747: javac crashes on bad annotation value
vromero
parents:
diff changeset
    25
        A,
567c159ce16f 8182747: javac crashes on bad annotation value
vromero
parents:
diff changeset
    26
        B,
567c159ce16f 8182747: javac crashes on bad annotation value
vromero
parents:
diff changeset
    27
    }
567c159ce16f 8182747: javac crashes on bad annotation value
vromero
parents:
diff changeset
    28
567c159ce16f 8182747: javac crashes on bad annotation value
vromero
parents:
diff changeset
    29
    @interface EnumAnno {
567c159ce16f 8182747: javac crashes on bad annotation value
vromero
parents:
diff changeset
    30
        E value();
567c159ce16f 8182747: javac crashes on bad annotation value
vromero
parents:
diff changeset
    31
    }
567c159ce16f 8182747: javac crashes on bad annotation value
vromero
parents:
diff changeset
    32
567c159ce16f 8182747: javac crashes on bad annotation value
vromero
parents:
diff changeset
    33
    static final Class<?> c = Object.class;
567c159ce16f 8182747: javac crashes on bad annotation value
vromero
parents:
diff changeset
    34
    static final int i = 0;
567c159ce16f 8182747: javac crashes on bad annotation value
vromero
parents:
diff changeset
    35
    static final int[] arr = new int[] { 1, 2, 3 };
567c159ce16f 8182747: javac crashes on bad annotation value
vromero
parents:
diff changeset
    36
    static final E a = E.A;
567c159ce16f 8182747: javac crashes on bad annotation value
vromero
parents:
diff changeset
    37
    static final String s = "";
567c159ce16f 8182747: javac crashes on bad annotation value
vromero
parents:
diff changeset
    38
567c159ce16f 8182747: javac crashes on bad annotation value
vromero
parents:
diff changeset
    39
    @ClassAnno(c)     // error
567c159ce16f 8182747: javac crashes on bad annotation value
vromero
parents:
diff changeset
    40
    @PrimitiveAnno(i) // ok
567c159ce16f 8182747: javac crashes on bad annotation value
vromero
parents:
diff changeset
    41
    @ArrayAnno(arr)   // error
567c159ce16f 8182747: javac crashes on bad annotation value
vromero
parents:
diff changeset
    42
    @EnumAnno(a)      // error
567c159ce16f 8182747: javac crashes on bad annotation value
vromero
parents:
diff changeset
    43
    @StringAnno(s)    //ok
567c159ce16f 8182747: javac crashes on bad annotation value
vromero
parents:
diff changeset
    44
    void testAnno() {}
567c159ce16f 8182747: javac crashes on bad annotation value
vromero
parents:
diff changeset
    45
}