T6939780.java revision 2758:3c1b5fcf6fad
118334Speter/* 290075Sobrien * @test /nodynamiccopyright/ 3169689Skan * @bug 6939780 7020044 8009459 8021338 4169689Skan * 518334Speter * @summary add a warning to detect diamond sites 690075Sobrien * @author mcimadamore 718334Speter * @compile/ref=T6939780_7.out -Xlint:-options -source 7 T6939780.java -XDrawDiagnostics -XDfind=diamond 890075Sobrien * @compile/ref=T6939780_8.out T6939780.java -XDrawDiagnostics -XDfind=diamond 990075Sobrien * 1090075Sobrien */ 1190075Sobrien 1218334Speterclass T6939780 { 1390075Sobrien 1490075Sobrien static class Foo<X extends Number> { 1590075Sobrien Foo() {} 1690075Sobrien Foo(X x) {} 1718334Speter } 1818334Speter 1990075Sobrien void testAssign() { 20169689Skan Foo<Number> f1 = new Foo<Number>(1); 21169689Skan Foo<?> f2 = new Foo<Number>(); 2218334Speter Foo<?> f3 = new Foo<Integer>(); 2318334Speter Foo<Number> f4 = new Foo<Number>(1) {}; 2418334Speter Foo<?> f5 = new Foo<Number>() {}; 2518334Speter Foo<?> f6 = new Foo<Integer>() {}; 2618334Speter } 2718334Speter 2818334Speter void testMethod() { 2918334Speter gn(new Foo<Number>(1)); 3018334Speter gw(new Foo<Number>()); 31117395Skan gw(new Foo<Integer>()); 3218334Speter gn(new Foo<Number>(1) {}); 3318334Speter gw(new Foo<Number>() {}); 3450397Sobrien gw(new Foo<Integer>() {}); 35132718Skan } 36132718Skan 3750397Sobrien void gw(Foo<?> fw) { } 3850397Sobrien void gn(Foo<Number> fn) { } 39117395Skan 4090075Sobrien static class Foo2<X> { 4150397Sobrien X copy(X t) { 4250397Sobrien return t; 4350397Sobrien } 4490075Sobrien } 4590075Sobrien 4690075Sobrien void testReciever() { 4790075Sobrien Number s = new Foo2<Number>().copy(0); 4890075Sobrien } 49169689Skan 50169689Skan} 51169689Skan