author | jlahoda |
Sun, 28 Jul 2013 10:17:45 +0200 | |
changeset 19132 | e2349c075315 |
parent 16331 | fafe9741fb7e |
child 28142 | 32a6b1af81b1 |
permissions | -rw-r--r-- |
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 |
} |