Neg03.java revision 2868:816bd88d33a8
1128707Sru/*
2128707Sru * @test /nodynamiccopyright/
3128707Sru * @bug 6939620 7020044 8062373
4128707Sru *
5128707Sru * @summary  Check that diamond fails when inference violates declared bounds
6128707Sru *           (test with inner class, qualified/simple type expressions)
7128707Sru * @author mcimadamore
8128707Sru * @compile/fail/ref=Neg03.out Neg03.java -XDrawDiagnostics
9128707Sru *
10128707Sru */
11128707Sru
12128707Sruclass Neg03<U> {
13128707Sru
14128707Sru    class Foo<V extends Number> {
15128707Sru        Foo(V x) {}
16128707Sru        <Z> Foo(V x, Z z) {}
17125932Sru    }
18129240Sru
19129240Sru    void testSimple() {
20125932Sru        Foo<String> f1 = new Foo<>("");
21125932Sru        Foo<? extends String> f2 = new Foo<>("");
22125932Sru        Foo<?> f3 = new Foo<>("");
23125932Sru        Foo<? super String> f4 = new Foo<>("");
24125932Sru
25125932Sru        Foo<String> f5 = new Foo<>("", "");
26125932Sru        Foo<? extends String> f6 = new Foo<>("", "");
27241301Savg        Foo<?> f7 = new Foo<>("", "");
28125932Sru        Foo<? super String> f8 = new Foo<>("", "");
29220337Srdivacky
30220337Srdivacky        Foo<String> f9 = new Foo<>(""){};
31129240Sru        Foo<? extends String> f10 = new Foo<>(""){};
32129240Sru        Foo<?> f11 = new Foo<>(""){};
33129240Sru        Foo<? super String> f12 = new Foo<>(""){};
34220337Srdivacky
35129240Sru        Foo<String> f13 = new Foo<>("", ""){};
36220337Srdivacky        Foo<? extends String> f14 = new Foo<>("", ""){};
37129240Sru        Foo<?> f15 = new Foo<>("", ""){};
38129240Sru        Foo<? super String> f16 = new Foo<>("", ""){};
39129240Sru    }
40129240Sru
41129240Sru    void testQualified_1() {
42129240Sru        Foo<String> f1 = new Neg03<U>.Foo<>("");
43242804Sdim        Foo<? extends String> f2 = new Neg03<U>.Foo<>("");
44125932Sru        Foo<?> f3 = new Neg03<U>.Foo<>("");
45241301Savg        Foo<? super String> f4 = new Neg03<U>.Foo<>("");
46125932Sru
47242804Sdim        Foo<String> f5 = new Neg03<U>.Foo<>("", "");
48241301Savg        Foo<? extends String> f6 = new Neg03<U>.Foo<>("", "");
49241301Savg        Foo<?> f7 = new Neg03<U>.Foo<>("", "");
50241301Savg        Foo<? super String> f8 = new Neg03<U>.Foo<>("", "");
51241301Savg
52241301Savg        Foo<String> f9 = new Neg03<U>.Foo<>(""){};
53241301Savg        Foo<? extends String> f10 = new Neg03<U>.Foo<>(""){};
54125932Sru        Foo<?> f11 = new Neg03<U>.Foo<>(""){};
55128707Sru        Foo<? super String> f12 = new Neg03<U>.Foo<>(""){};
56125932Sru
57220337Srdivacky        Foo<String> f13 = new Neg03<U>.Foo<>("", ""){};
58220337Srdivacky        Foo<? extends String> f14 = new Neg03<U>.Foo<>("", ""){};
59129240Sru        Foo<?> f15 = new Neg03<U>.Foo<>("", ""){};
60129240Sru        Foo<? super String> f16 = new Neg03<U>.Foo<>("", ""){};
61129240Sru    }
62129240Sru
63129240Sru    void testQualified_2(Neg03<U> n) {
64129240Sru        Foo<String> f1 = n.new Foo<>("");
65220337Srdivacky        Foo<? extends String> f2 = n.new Foo<>("");
66129240Sru        Foo<?> f3 = n.new Foo<>("");
67129240Sru        Foo<? super String> f4 = n.new Foo<>("");
68220337Srdivacky
69125932Sru        Foo<String> f5 = n.new Foo<>("", "");
70128707Sru        Foo<? extends String> f6 = n.new Foo<>("", "");
71125932Sru        Foo<?> f7 = n.new Foo<>("", "");
72129240Sru        Foo<? super String> f8 = n.new Foo<>("", "");
73129240Sru
74129240Sru        Foo<String> f9 = n.new Foo<>(""){};
75129240Sru        Foo<? extends String> f10 = n.new Foo<>(""){};
76129240Sru        Foo<?> f11 = n.new Foo<>(""){};
77125932Sru        Foo<? super String> f12 = n.new Foo<>(""){};
78128707Sru
79125932Sru        Foo<String> f13 = n.new Foo<>("", ""){};
80129240Sru        Foo<? extends String> f14 = n.new Foo<>("", ""){};
81129240Sru        Foo<?> f15 = n.new Foo<>("", ""){};
82129240Sru        Foo<? super String> f16 = n.new Foo<>("", ""){};
83129240Sru    }
84129240Sru}
85