langtools/test/tools/javac/generics/diamond/neg/Neg20.java
author sadayapalam
Thu, 26 Nov 2015 17:38:15 +0530
changeset 34474 14deea5f86f1
parent 30403 c904bbdc5ec1
permissions -rw-r--r--
8078660: Misleading recommendation from diamond finder. Summary: javac should recommend diamond usage if that could lead to a change in program behavior. Reviewed-by: mcimadamore
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
30403
c904bbdc5ec1 8078592: Compiler fails to reject erroneous use of diamond with anonymous classes involving "fresh" type variables.
sadayapalam
parents:
diff changeset
     1
/*
c904bbdc5ec1 8078592: Compiler fails to reject erroneous use of diamond with anonymous classes involving "fresh" type variables.
sadayapalam
parents:
diff changeset
     2
 * @test /nodynamiccopyright/
c904bbdc5ec1 8078592: Compiler fails to reject erroneous use of diamond with anonymous classes involving "fresh" type variables.
sadayapalam
parents:
diff changeset
     3
 * @bug 8078592
c904bbdc5ec1 8078592: Compiler fails to reject erroneous use of diamond with anonymous classes involving "fresh" type variables.
sadayapalam
parents:
diff changeset
     4
 * @summary Compiler fails to reject erroneous use of diamond with anonymous classes involving "fresh" type variables.
c904bbdc5ec1 8078592: Compiler fails to reject erroneous use of diamond with anonymous classes involving "fresh" type variables.
sadayapalam
parents:
diff changeset
     5
 * @compile/fail/ref=Neg20.out Neg20.java -XDrawDiagnostics
c904bbdc5ec1 8078592: Compiler fails to reject erroneous use of diamond with anonymous classes involving "fresh" type variables.
sadayapalam
parents:
diff changeset
     6
 */
c904bbdc5ec1 8078592: Compiler fails to reject erroneous use of diamond with anonymous classes involving "fresh" type variables.
sadayapalam
parents:
diff changeset
     7
import java.lang.annotation.ElementType;
c904bbdc5ec1 8078592: Compiler fails to reject erroneous use of diamond with anonymous classes involving "fresh" type variables.
sadayapalam
parents:
diff changeset
     8
import java.lang.annotation.Target;
c904bbdc5ec1 8078592: Compiler fails to reject erroneous use of diamond with anonymous classes involving "fresh" type variables.
sadayapalam
parents:
diff changeset
     9
c904bbdc5ec1 8078592: Compiler fails to reject erroneous use of diamond with anonymous classes involving "fresh" type variables.
sadayapalam
parents:
diff changeset
    10
public class Neg20 {
c904bbdc5ec1 8078592: Compiler fails to reject erroneous use of diamond with anonymous classes involving "fresh" type variables.
sadayapalam
parents:
diff changeset
    11
    static class Foo<E extends B<E>> {
c904bbdc5ec1 8078592: Compiler fails to reject erroneous use of diamond with anonymous classes involving "fresh" type variables.
sadayapalam
parents:
diff changeset
    12
        public Foo<E> complexMethod(E a) {
c904bbdc5ec1 8078592: Compiler fails to reject erroneous use of diamond with anonymous classes involving "fresh" type variables.
sadayapalam
parents:
diff changeset
    13
            return this;
c904bbdc5ec1 8078592: Compiler fails to reject erroneous use of diamond with anonymous classes involving "fresh" type variables.
sadayapalam
parents:
diff changeset
    14
        }
c904bbdc5ec1 8078592: Compiler fails to reject erroneous use of diamond with anonymous classes involving "fresh" type variables.
sadayapalam
parents:
diff changeset
    15
    }
c904bbdc5ec1 8078592: Compiler fails to reject erroneous use of diamond with anonymous classes involving "fresh" type variables.
sadayapalam
parents:
diff changeset
    16
c904bbdc5ec1 8078592: Compiler fails to reject erroneous use of diamond with anonymous classes involving "fresh" type variables.
sadayapalam
parents:
diff changeset
    17
    static class Goo<@T E> {
c904bbdc5ec1 8078592: Compiler fails to reject erroneous use of diamond with anonymous classes involving "fresh" type variables.
sadayapalam
parents:
diff changeset
    18
        public Goo<E> complexMethod(E a) {
c904bbdc5ec1 8078592: Compiler fails to reject erroneous use of diamond with anonymous classes involving "fresh" type variables.
sadayapalam
parents:
diff changeset
    19
            return this;
c904bbdc5ec1 8078592: Compiler fails to reject erroneous use of diamond with anonymous classes involving "fresh" type variables.
sadayapalam
parents:
diff changeset
    20
        }
c904bbdc5ec1 8078592: Compiler fails to reject erroneous use of diamond with anonymous classes involving "fresh" type variables.
sadayapalam
parents:
diff changeset
    21
    }
c904bbdc5ec1 8078592: Compiler fails to reject erroneous use of diamond with anonymous classes involving "fresh" type variables.
sadayapalam
parents:
diff changeset
    22
c904bbdc5ec1 8078592: Compiler fails to reject erroneous use of diamond with anonymous classes involving "fresh" type variables.
sadayapalam
parents:
diff changeset
    23
    static class B<V> {
c904bbdc5ec1 8078592: Compiler fails to reject erroneous use of diamond with anonymous classes involving "fresh" type variables.
sadayapalam
parents:
diff changeset
    24
    }
c904bbdc5ec1 8078592: Compiler fails to reject erroneous use of diamond with anonymous classes involving "fresh" type variables.
sadayapalam
parents:
diff changeset
    25
c904bbdc5ec1 8078592: Compiler fails to reject erroneous use of diamond with anonymous classes involving "fresh" type variables.
sadayapalam
parents:
diff changeset
    26
    @Target(ElementType.TYPE_USE)
c904bbdc5ec1 8078592: Compiler fails to reject erroneous use of diamond with anonymous classes involving "fresh" type variables.
sadayapalam
parents:
diff changeset
    27
    static @interface T {
c904bbdc5ec1 8078592: Compiler fails to reject erroneous use of diamond with anonymous classes involving "fresh" type variables.
sadayapalam
parents:
diff changeset
    28
    }
c904bbdc5ec1 8078592: Compiler fails to reject erroneous use of diamond with anonymous classes involving "fresh" type variables.
sadayapalam
parents:
diff changeset
    29
c904bbdc5ec1 8078592: Compiler fails to reject erroneous use of diamond with anonymous classes involving "fresh" type variables.
sadayapalam
parents:
diff changeset
    30
    public static void check() {
c904bbdc5ec1 8078592: Compiler fails to reject erroneous use of diamond with anonymous classes involving "fresh" type variables.
sadayapalam
parents:
diff changeset
    31
        Foo<?> t4 = new Foo<>() {
c904bbdc5ec1 8078592: Compiler fails to reject erroneous use of diamond with anonymous classes involving "fresh" type variables.
sadayapalam
parents:
diff changeset
    32
        };
c904bbdc5ec1 8078592: Compiler fails to reject erroneous use of diamond with anonymous classes involving "fresh" type variables.
sadayapalam
parents:
diff changeset
    33
        Goo<?> g4 = new Goo<>() {
c904bbdc5ec1 8078592: Compiler fails to reject erroneous use of diamond with anonymous classes involving "fresh" type variables.
sadayapalam
parents:
diff changeset
    34
        };
c904bbdc5ec1 8078592: Compiler fails to reject erroneous use of diamond with anonymous classes involving "fresh" type variables.
sadayapalam
parents:
diff changeset
    35
    }
c904bbdc5ec1 8078592: Compiler fails to reject erroneous use of diamond with anonymous classes involving "fresh" type variables.
sadayapalam
parents:
diff changeset
    36
}