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