test/langtools/tools/javac/lvti/BadLocalVarInferenceTest.java
author mcimadamore
Tue, 26 Sep 2017 12:52:53 +0100
changeset 47268 48ec75306997
child 47934 6373d9a0ad82
permissions -rw-r--r--
8177466: Add compiler support for local variable type-inference Summary: Add support for 'var' in implicitly typed local variable declarations Reviewed-by: vromero, jlahoda
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=BadLocalVarInferenceTest.out -XDrawDiagnostics BadLocalVarInferenceTest.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
48ec75306997 8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff changeset
     8
class BadLocalVarInferenceTest {
48ec75306997 8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff changeset
     9
48ec75306997 8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff changeset
    10
    interface Foo<X> {
48ec75306997 8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff changeset
    11
        void m(X x);
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
48ec75306997 8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff changeset
    14
    interface Supplier<X> {
48ec75306997 8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff changeset
    15
        void m(X x);
48ec75306997 8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff changeset
    16
    }
48ec75306997 8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff changeset
    17
48ec75306997 8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff changeset
    18
    void test() {
48ec75306997 8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff changeset
    19
        var x;
48ec75306997 8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff changeset
    20
        var f = () -> { };
48ec75306997 8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff changeset
    21
        var m = this::l;
48ec75306997 8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff changeset
    22
        var g = null;
48ec75306997 8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff changeset
    23
        var d = d = 1;
48ec75306997 8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff changeset
    24
        var k = { 1 , 2 };
48ec75306997 8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff changeset
    25
        var l = new Foo<>() { //LHS was Foo<String>
48ec75306997 8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff changeset
    26
            @Override
48ec75306997 8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff changeset
    27
            void m(String s) { }
48ec75306997 8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff changeset
    28
        };
48ec75306997 8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff changeset
    29
        var s = f(x -> { x.charAt(0); }); //LHS was String
48ec75306997 8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff changeset
    30
    }
48ec75306997 8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff changeset
    31
48ec75306997 8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff changeset
    32
    <Z> Z f(Supplier<Z> sz) { return null; }
48ec75306997 8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff changeset
    33
}