test/langtools/tools/javac/lvti/BadLocalVarInferenceTest.java
author mcimadamore
Wed, 29 Nov 2017 17:31:23 +0000
changeset 47959 5dd899009525
parent 47934 6373d9a0ad82
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/
47934
6373d9a0ad82 8191834: Assigning a void expression to a "var" crashes the compiler
mcimadamore
parents: 47268
diff changeset
     3
 * @bug 8177466 8191834
47268
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
47934
6373d9a0ad82 8191834: Assigning a void expression to a "var" crashes the compiler
mcimadamore
parents: 47268
diff changeset
    30
        var t = m(); //void
47268
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
48ec75306997 8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff changeset
    33
    <Z> Z f(Supplier<Z> sz) { return null; }
47934
6373d9a0ad82 8191834: Assigning a void expression to a "var" crashes the compiler
mcimadamore
parents: 47268
diff changeset
    34
6373d9a0ad82 8191834: Assigning a void expression to a "var" crashes the compiler
mcimadamore
parents: 47268
diff changeset
    35
    void m() { }
47268
48ec75306997 8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff changeset
    36
}