1 /* 2 * @test /nodynamiccopyright/ 3 * @bug 6939620 7020044 8062373 4 * 5 * @summary Check that usage of rare types doesn't cause spurious diamond diagnostics 6 * @author mcimadamore 7 * @compile/fail/ref=Neg05.out Neg05.java -XDrawDiagnostics 8 * 9 */ 10 11 class Neg05<U> { 12 13 class Foo<V> { Foo(V x)14 Foo(V x) {} Foo(V x, Z z)15 <Z> Foo(V x, Z z) {} 16 } 17 testRare_1()18 void testRare_1() { 19 Neg05<?>.Foo<String> f1 = new Neg05.Foo<>(""); 20 Neg05<?>.Foo<? extends String> f2 = new Neg05.Foo<>(""); 21 Neg05<?>.Foo<?> f3 = new Neg05.Foo<>(""); 22 Neg05<?>.Foo<? super String> f4 = new Neg05.Foo<>(""); 23 24 Neg05<?>.Foo<String> f5 = new Neg05.Foo<>("", ""); 25 Neg05<?>.Foo<? extends String> f6 = new Neg05.Foo<>("", ""); 26 Neg05<?>.Foo<?> f7 = new Neg05.Foo<>("", ""); 27 Neg05<?>.Foo<? super String> f8 = new Neg05.Foo<>("", ""); 28 29 Neg05<?>.Foo<String> f9 = new Neg05.Foo<>(""){}; 30 Neg05<?>.Foo<? extends String> f10 = new Neg05.Foo<>(""){}; 31 Neg05<?>.Foo<?> f11 = new Neg05.Foo<>(""){}; 32 Neg05<?>.Foo<? super String> f12 = new Neg05.Foo<>(""){}; 33 34 Neg05<?>.Foo<String> f13 = new Neg05.Foo<>("", ""){}; 35 Neg05<?>.Foo<? extends String> f14 = new Neg05.Foo<>("", ""){}; 36 Neg05<?>.Foo<?> f15 = new Neg05.Foo<>("", ""){}; 37 Neg05<?>.Foo<? super String> f16 = new Neg05.Foo<>("", ""){}; 38 } 39 testRare_2(Neg05 n)40 void testRare_2(Neg05 n) { 41 Neg05<?>.Foo<String> f1 = n.new Foo<>(""); 42 Neg05<?>.Foo<? extends String> f2 = n.new Foo<>(""); 43 Neg05<?>.Foo<?> f3 = n.new Foo<>(""); 44 Neg05<?>.Foo<? super String> f4 = n.new Foo<>(""); 45 46 Neg05<?>.Foo<String> f5 = n.new Foo<>("", ""); 47 Neg05<?>.Foo<? extends String> f6 = n.new Foo<>("", ""); 48 Neg05<?>.Foo<?> f7 = n.new Foo<>("", ""); 49 Neg05<?>.Foo<? super String> f8 = n.new Foo<>("", ""); 50 51 Neg05<?>.Foo<String> f9 = n.new Foo<>(""){}; 52 Neg05<?>.Foo<? extends String> f10 = n.new Foo<>(""){}; 53 Neg05<?>.Foo<?> f11 = n.new Foo<>(""){}; 54 Neg05<?>.Foo<? super String> f12 = n.new Foo<>(""){}; 55 56 Neg05<?>.Foo<String> f13 = n.new Foo<>("", ""){}; 57 Neg05<?>.Foo<? extends String> f14 = n.new Foo<>("", ""){}; 58 Neg05<?>.Foo<?> f15 = n.new Foo<>("", ""){}; 59 Neg05<?>.Foo<? super String> f16 = n.new Foo<>("", ""){}; 60 } 61 } 62