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