test/langtools/tools/javac/lvti/FoldingTest.java
author mcimadamore
Wed, 29 Nov 2017 17:31:23 +0000
changeset 47959 5dd899009525
parent 47268 48ec75306997
permissions -rw-r--r--
8191802: Upward projection result is A<? extends Number> instead of A<? super Integer> Summary: Code in Types.TypeProjection doesn't match the latest spec text Reviewed-by: vromero
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
47268
48ec75306997 8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff changeset
     1
/*
48ec75306997 8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff changeset
     2
 * @test /nodynamiccopyright/
48ec75306997 8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff changeset
     3
 * @bug 8177466
48ec75306997 8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff changeset
     4
 * @summary Add compiler support for local variable type-inference
48ec75306997 8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff changeset
     5
 * @compile/fail/ref=FoldingTest.out -XDrawDiagnostics FoldingTest.java
48ec75306997 8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff changeset
     6
 */
48ec75306997 8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff changeset
     7
class FoldingTest {
48ec75306997 8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff changeset
     8
48ec75306997 8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff changeset
     9
        void testReachability() {
48ec75306997 8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff changeset
    10
        for(var i = 0; i < 3; i++) {
48ec75306997 8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff changeset
    11
              // ok
48ec75306997 8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff changeset
    12
        }
48ec75306997 8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff changeset
    13
            System.out.println("foo");   //this should be reachable
48ec75306997 8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff changeset
    14
        }
48ec75306997 8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff changeset
    15
48ec75306997 8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff changeset
    16
    void testCase(String s) {
48ec75306997 8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff changeset
    17
        var c = "";
48ec75306997 8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff changeset
    18
        final String c2 = "" + c;
48ec75306997 8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff changeset
    19
        switch (s) {
48ec75306997 8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff changeset
    20
            case c: break; //error!
48ec75306997 8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff changeset
    21
            case c2: break; //error!
48ec75306997 8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff changeset
    22
        }
48ec75306997 8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff changeset
    23
    }
48ec75306997 8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff changeset
    24
48ec75306997 8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff changeset
    25
    void testAnno() {
48ec75306997 8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff changeset
    26
        @Anno1(s1) //error
48ec75306997 8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff changeset
    27
        var s1 = "";
48ec75306997 8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff changeset
    28
        @Anno2(s2) //error
48ec75306997 8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff changeset
    29
        var s2 = "";
48ec75306997 8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff changeset
    30
        @Anno3(s3) //error
48ec75306997 8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff changeset
    31
        var s3 = "";
48ec75306997 8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff changeset
    32
    }
48ec75306997 8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff changeset
    33
48ec75306997 8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff changeset
    34
    @interface Anno1 {
48ec75306997 8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff changeset
    35
        String value();
48ec75306997 8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff changeset
    36
    }
48ec75306997 8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff changeset
    37
    @interface Anno2 {
48ec75306997 8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff changeset
    38
        Class<?> value();
48ec75306997 8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff changeset
    39
    }
48ec75306997 8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff changeset
    40
    @interface Anno3 {
48ec75306997 8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff changeset
    41
        Foo value();
48ec75306997 8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff changeset
    42
    }
48ec75306997 8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff changeset
    43
48ec75306997 8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff changeset
    44
    enum Foo {
48ec75306997 8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff changeset
    45
        A, B;
48ec75306997 8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff changeset
    46
    }
48ec75306997 8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff changeset
    47
}