langtools/test/tools/javac/generics/diamond/6939780/T6939780.java
author jlahoda
Sun, 28 Jul 2013 10:17:45 +0200
changeset 19132 e2349c075315
parent 16331 fafe9741fb7e
child 28142 32a6b1af81b1
permissions -rw-r--r--
8021338: Diamond finder may mark a required type argument as unnecessary Reviewed-by: mcimadamore
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
16331
fafe9741fb7e 8009459: Wrong behavior of diamond finder with source level 7
mcimadamore
parents:
diff changeset
     1
/*
fafe9741fb7e 8009459: Wrong behavior of diamond finder with source level 7
mcimadamore
parents:
diff changeset
     2
 * @test /nodynamiccopyright/
19132
e2349c075315 8021338: Diamond finder may mark a required type argument as unnecessary
jlahoda
parents: 16331
diff changeset
     3
 * @bug 6939780 7020044 8009459 8021338
16331
fafe9741fb7e 8009459: Wrong behavior of diamond finder with source level 7
mcimadamore
parents:
diff changeset
     4
 *
fafe9741fb7e 8009459: Wrong behavior of diamond finder with source level 7
mcimadamore
parents:
diff changeset
     5
 * @summary  add a warning to detect diamond sites
fafe9741fb7e 8009459: Wrong behavior of diamond finder with source level 7
mcimadamore
parents:
diff changeset
     6
 * @author mcimadamore
fafe9741fb7e 8009459: Wrong behavior of diamond finder with source level 7
mcimadamore
parents:
diff changeset
     7
 * @compile/ref=T6939780_7.out -Xlint:-options -source 7 T6939780.java -XDrawDiagnostics -XDfindDiamond
fafe9741fb7e 8009459: Wrong behavior of diamond finder with source level 7
mcimadamore
parents:
diff changeset
     8
 * @compile/ref=T6939780_8.out T6939780.java -XDrawDiagnostics -XDfindDiamond
fafe9741fb7e 8009459: Wrong behavior of diamond finder with source level 7
mcimadamore
parents:
diff changeset
     9
 *
fafe9741fb7e 8009459: Wrong behavior of diamond finder with source level 7
mcimadamore
parents:
diff changeset
    10
 */
fafe9741fb7e 8009459: Wrong behavior of diamond finder with source level 7
mcimadamore
parents:
diff changeset
    11
fafe9741fb7e 8009459: Wrong behavior of diamond finder with source level 7
mcimadamore
parents:
diff changeset
    12
class T6939780 {
fafe9741fb7e 8009459: Wrong behavior of diamond finder with source level 7
mcimadamore
parents:
diff changeset
    13
fafe9741fb7e 8009459: Wrong behavior of diamond finder with source level 7
mcimadamore
parents:
diff changeset
    14
    static class Foo<X extends Number> {
fafe9741fb7e 8009459: Wrong behavior of diamond finder with source level 7
mcimadamore
parents:
diff changeset
    15
        Foo() {}
fafe9741fb7e 8009459: Wrong behavior of diamond finder with source level 7
mcimadamore
parents:
diff changeset
    16
        Foo(X x) {}
fafe9741fb7e 8009459: Wrong behavior of diamond finder with source level 7
mcimadamore
parents:
diff changeset
    17
    }
fafe9741fb7e 8009459: Wrong behavior of diamond finder with source level 7
mcimadamore
parents:
diff changeset
    18
fafe9741fb7e 8009459: Wrong behavior of diamond finder with source level 7
mcimadamore
parents:
diff changeset
    19
    void testAssign() {
fafe9741fb7e 8009459: Wrong behavior of diamond finder with source level 7
mcimadamore
parents:
diff changeset
    20
        Foo<Number> f1 = new Foo<Number>(1);
fafe9741fb7e 8009459: Wrong behavior of diamond finder with source level 7
mcimadamore
parents:
diff changeset
    21
        Foo<?> f2 = new Foo<Number>();
fafe9741fb7e 8009459: Wrong behavior of diamond finder with source level 7
mcimadamore
parents:
diff changeset
    22
        Foo<?> f3 = new Foo<Integer>();
fafe9741fb7e 8009459: Wrong behavior of diamond finder with source level 7
mcimadamore
parents:
diff changeset
    23
        Foo<Number> f4 = new Foo<Number>(1) {};
fafe9741fb7e 8009459: Wrong behavior of diamond finder with source level 7
mcimadamore
parents:
diff changeset
    24
        Foo<?> f5 = new Foo<Number>() {};
fafe9741fb7e 8009459: Wrong behavior of diamond finder with source level 7
mcimadamore
parents:
diff changeset
    25
        Foo<?> f6 = new Foo<Integer>() {};
fafe9741fb7e 8009459: Wrong behavior of diamond finder with source level 7
mcimadamore
parents:
diff changeset
    26
    }
fafe9741fb7e 8009459: Wrong behavior of diamond finder with source level 7
mcimadamore
parents:
diff changeset
    27
fafe9741fb7e 8009459: Wrong behavior of diamond finder with source level 7
mcimadamore
parents:
diff changeset
    28
    void testMethod() {
fafe9741fb7e 8009459: Wrong behavior of diamond finder with source level 7
mcimadamore
parents:
diff changeset
    29
        gn(new Foo<Number>(1));
fafe9741fb7e 8009459: Wrong behavior of diamond finder with source level 7
mcimadamore
parents:
diff changeset
    30
        gw(new Foo<Number>());
fafe9741fb7e 8009459: Wrong behavior of diamond finder with source level 7
mcimadamore
parents:
diff changeset
    31
        gw(new Foo<Integer>());
fafe9741fb7e 8009459: Wrong behavior of diamond finder with source level 7
mcimadamore
parents:
diff changeset
    32
        gn(new Foo<Number>(1) {});
fafe9741fb7e 8009459: Wrong behavior of diamond finder with source level 7
mcimadamore
parents:
diff changeset
    33
        gw(new Foo<Number>() {});
fafe9741fb7e 8009459: Wrong behavior of diamond finder with source level 7
mcimadamore
parents:
diff changeset
    34
        gw(new Foo<Integer>() {});
fafe9741fb7e 8009459: Wrong behavior of diamond finder with source level 7
mcimadamore
parents:
diff changeset
    35
    }
fafe9741fb7e 8009459: Wrong behavior of diamond finder with source level 7
mcimadamore
parents:
diff changeset
    36
fafe9741fb7e 8009459: Wrong behavior of diamond finder with source level 7
mcimadamore
parents:
diff changeset
    37
    void gw(Foo<?> fw) { }
fafe9741fb7e 8009459: Wrong behavior of diamond finder with source level 7
mcimadamore
parents:
diff changeset
    38
    void gn(Foo<Number> fn) { }
19132
e2349c075315 8021338: Diamond finder may mark a required type argument as unnecessary
jlahoda
parents: 16331
diff changeset
    39
e2349c075315 8021338: Diamond finder may mark a required type argument as unnecessary
jlahoda
parents: 16331
diff changeset
    40
    static class Foo2<X> {
e2349c075315 8021338: Diamond finder may mark a required type argument as unnecessary
jlahoda
parents: 16331
diff changeset
    41
        X copy(X t) {
e2349c075315 8021338: Diamond finder may mark a required type argument as unnecessary
jlahoda
parents: 16331
diff changeset
    42
            return t;
e2349c075315 8021338: Diamond finder may mark a required type argument as unnecessary
jlahoda
parents: 16331
diff changeset
    43
        }
e2349c075315 8021338: Diamond finder may mark a required type argument as unnecessary
jlahoda
parents: 16331
diff changeset
    44
    }
e2349c075315 8021338: Diamond finder may mark a required type argument as unnecessary
jlahoda
parents: 16331
diff changeset
    45
e2349c075315 8021338: Diamond finder may mark a required type argument as unnecessary
jlahoda
parents: 16331
diff changeset
    46
    void testReciever() {
e2349c075315 8021338: Diamond finder may mark a required type argument as unnecessary
jlahoda
parents: 16331
diff changeset
    47
        Number s = new Foo2<Number>().copy(0);
e2349c075315 8021338: Diamond finder may mark a required type argument as unnecessary
jlahoda
parents: 16331
diff changeset
    48
    }
e2349c075315 8021338: Diamond finder may mark a required type argument as unnecessary
jlahoda
parents: 16331
diff changeset
    49
16331
fafe9741fb7e 8009459: Wrong behavior of diamond finder with source level 7
mcimadamore
parents:
diff changeset
    50
}