mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-08-25 14:25:04 +07:00
diamonds: accept captured types; discard anonymous inner classes (IDEA-67125)
This commit is contained in:
+11
-31
@@ -1,38 +1,18 @@
|
||||
class Neg01<X extends Number> {
|
||||
|
||||
Neg01(X x) {
|
||||
}
|
||||
Neg01(X x) {}
|
||||
|
||||
<Z> Neg01(X x, Z z) {
|
||||
}
|
||||
<Z> Neg01(X x, Z z) {}
|
||||
|
||||
void test() {
|
||||
Neg01<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'">String</error>> n1 = new Neg01<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("" ); //new Foo<Integer> created
|
||||
Neg01<<error descr="Type parameter '? extends String' is not within its bound; should extend 'java.lang.Number'">? extends String</error>> n2 = new Neg01<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>(""); //new Foo<Integer> created
|
||||
Neg01<?> n3 = new Neg01<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>(""); //new Foo<Object> created
|
||||
Neg01<<error descr="Type parameter '? super String' is not within its bound; should extend 'java.lang.Number'">? super String</error>> n4 = new Neg01<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>(""); //new Foo<Object> created
|
||||
Neg01<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'">String</error>> n1 = new Neg01<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("");
|
||||
Neg01<<error descr="Type parameter '? extends String' is not within its bound; should extend 'java.lang.Number'">? extends String</error>> n2 = new Neg01<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("");
|
||||
Neg01<?> n3 = new Neg01<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("");
|
||||
Neg01<<error descr="Type parameter '? super String' is not within its bound; should extend 'java.lang.Number'">? super String</error>> n4 = new Neg01<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("");
|
||||
|
||||
Neg01<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'">String</error>> n5 = new Neg01<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("") {
|
||||
}; //new Foo<Integer> created
|
||||
Neg01<<error descr="Type parameter '? extends String' is not within its bound; should extend 'java.lang.Number'">? extends String</error>> n6 = new Neg01<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("") {
|
||||
}; //new Foo<Integer> created
|
||||
Neg01<?> n7 = new Neg01<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("") {
|
||||
}; //new Foo<Object> created
|
||||
Neg01<<error descr="Type parameter '? super String' is not within its bound; should extend 'java.lang.Number'">? super String</error>> n8 = new Neg01<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("") {
|
||||
}; //new Foo<Object> created
|
||||
|
||||
Neg01<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'">String</error>> n9 = new Neg01<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("", ""); //new Foo<Integer> created
|
||||
Neg01<<error descr="Type parameter '? extends String' is not within its bound; should extend 'java.lang.Number'">? extends String</error>> n10 = new Neg01<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("", ""); //new Foo<Integer> created
|
||||
Neg01<?> n11 = new Neg01<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("", ""); //new Foo<Object> created
|
||||
<error descr="Cannot resolve symbol 'Foo'">Foo</error><? super String> n12 = new Neg01<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("", ""); //new Foo<Object> created
|
||||
|
||||
Neg01<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'">String</error>> n13 = new Neg01<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("", "") {
|
||||
}; //new Foo<Integer> created
|
||||
Neg01<<error descr="Type parameter '? extends String' is not within its bound; should extend 'java.lang.Number'">? extends String</error>> n14 = new Neg01<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("", "") {
|
||||
}; //new Foo<Integer> created
|
||||
Neg01<?> n15 = new Neg01<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("", "") {
|
||||
}; //new Foo<Object> created
|
||||
Neg01<<error descr="Type parameter '? super String' is not within its bound; should extend 'java.lang.Number'">? super String</error>> n16 = new Neg01<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("", "") {
|
||||
}; //new Foo<Object> created
|
||||
Neg01<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'">String</error>> n5 = new Neg01<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("", "");
|
||||
Neg01<<error descr="Type parameter '? extends String' is not within its bound; should extend 'java.lang.Number'">? extends String</error>> n6 = new Neg01<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("", "");
|
||||
Neg01<?> n7 = new Neg01<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("", "");
|
||||
<error descr="Cannot resolve symbol 'Foo'">Foo</error><? super String> n8 = new Neg01<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("", "");
|
||||
}
|
||||
}
|
||||
}
|
||||
+2
-2
@@ -3,5 +3,5 @@ class Neg10 {
|
||||
Foo(X x) {}
|
||||
}
|
||||
|
||||
<error descr="Incompatible types. Found: 'Neg10.Foo<java.lang.Integer>', required: 'Neg10.Foo<java.lang.Number>'">Foo<Number> fw = new Foo<>(1);</error>
|
||||
}
|
||||
<error descr="Incompatible types. Found: 'Neg10.Foo<java.lang.Integer>', required: 'Neg10.Foo<java.lang.Number>'">Foo<Number> fw = new Foo<>(1);</error>
|
||||
}
|
||||
+18
-58
@@ -1,71 +1,31 @@
|
||||
class Neg02 {
|
||||
|
||||
static class Foo<X extends Number> {
|
||||
Foo(X x) {
|
||||
}
|
||||
|
||||
<Z> Foo(X x, Z z) {
|
||||
}
|
||||
Foo(X x) {}
|
||||
<Z> Foo(X x, Z z) {}
|
||||
}
|
||||
|
||||
void testSimple() {
|
||||
Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'">String</error>> f1 = new Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>(""); //new Foo<Integer> created
|
||||
Foo<<error descr="Type parameter '? extends String' is not within its bound; should extend 'java.lang.Number'">? extends String</error>> f2 = new Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>(""); //new Foo<Integer> created
|
||||
Foo<?> f3 = new Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>(""); //new Foo<Object> created
|
||||
Foo<<error descr="Type parameter '? super String' is not within its bound; should extend 'java.lang.Number'">? super String</error>> f4 = new Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>(""); //new Foo<Object> created
|
||||
Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'">String</error>> f1 = new Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("");
|
||||
Foo<<error descr="Type parameter '? extends String' is not within its bound; should extend 'java.lang.Number'">? extends String</error>> f2 = new Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("");
|
||||
Foo<?> f3 = new Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("");
|
||||
Foo<<error descr="Type parameter '? super String' is not within its bound; should extend 'java.lang.Number'">? super String</error>> f4 = new Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("");
|
||||
|
||||
Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'">String</error>> f5 = new Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("") {
|
||||
}; //new Foo<Integer> created
|
||||
Foo<<error descr="Type parameter '? extends String' is not within its bound; should extend 'java.lang.Number'">? extends String</error>> f6 = new Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("") {
|
||||
}; //new Foo<Integer> created
|
||||
Foo<?> f7 = new Foo< <error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("") {
|
||||
}; //new Foo<Object> created
|
||||
Foo<<error descr="Type parameter '? super String' is not within its bound; should extend 'java.lang.Number'">? super String</error>> f8 = new Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("") {
|
||||
}; //new Foo<Object> created
|
||||
|
||||
Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'">String</error>> f9 = new Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("", ""); //new Foo<Integer> created
|
||||
Foo<<error descr="Type parameter '? extends String' is not within its bound; should extend 'java.lang.Number'">? extends String</error>> f10 = new Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("", ""); //new Foo<Integer> created
|
||||
Foo<?> f11 = new Foo< <error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("", ""); //new Foo<Object> created
|
||||
Foo<<error descr="Type parameter '? super String' is not within its bound; should extend 'java.lang.Number'">? super String</error>> f12 = new Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("", ""); //new Foo<Object> created
|
||||
|
||||
Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'">String</error>> f13 = new Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("", "") {
|
||||
}; //new Foo<Integer> created
|
||||
Foo<<error descr="Type parameter '? extends String' is not within its bound; should extend 'java.lang.Number'">? extends String</error>> f14 = new Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("", "") {
|
||||
}; //new Foo<Integer> created
|
||||
Foo<?> f15 = new Foo< <error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("", "") {
|
||||
}; //new Foo<Object> created
|
||||
Foo<<error descr="Type parameter '? super String' is not within its bound; should extend 'java.lang.Number'">? super String</error>> f16 = new Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("", "") {
|
||||
}; //new Foo<Object> created
|
||||
Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'">String</error>> f5 = new Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("", "");
|
||||
Foo<<error descr="Type parameter '? extends String' is not within its bound; should extend 'java.lang.Number'">? extends String</error>> f6 = new Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("", "");
|
||||
Foo<?> f7 = new Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("", "");
|
||||
Foo<<error descr="Type parameter '? super String' is not within its bound; should extend 'java.lang.Number'">? super String</error>> f8 = new Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("", "");
|
||||
}
|
||||
|
||||
void testQualified() {
|
||||
Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'">String</error>> f1 = new Neg02.Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>(""); //new Foo<Integer> created
|
||||
Foo<<error descr="Type parameter '? extends String' is not within its bound; should extend 'java.lang.Number'">? extends String</error>> f2 = new Neg02.Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>(""); //new Foo<Integer> created
|
||||
Foo<?> f3 = new Neg02.Foo< <error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>(""); //new Foo<Object> created
|
||||
Foo<<error descr="Type parameter '? super String' is not within its bound; should extend 'java.lang.Number'">? super String</error>> f4 = new Neg02.Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>(""); //new Foo<Object> created
|
||||
Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'">String</error>> f1 = new Neg02.Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("");
|
||||
Foo<<error descr="Type parameter '? extends String' is not within its bound; should extend 'java.lang.Number'">? extends String</error>> f2 = new Neg02.Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("");
|
||||
Foo<?> f3 = new Neg02.Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("");
|
||||
Foo<<error descr="Type parameter '? super String' is not within its bound; should extend 'java.lang.Number'">? super String</error>> f4 = new Neg02.Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("");
|
||||
|
||||
Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'">String</error>> f5 = new Neg02.Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("") {
|
||||
}; //new Foo<Integer> created
|
||||
Foo<<error descr="Type parameter '? extends String' is not within its bound; should extend 'java.lang.Number'">? extends String</error>> f6 = new Neg02.Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("") {
|
||||
}; //new Foo<Integer> created
|
||||
Foo<?> f7 = new Neg02.Foo< <error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("") {
|
||||
}; //new Foo<Object> created
|
||||
Foo<<error descr="Type parameter '? super String' is not within its bound; should extend 'java.lang.Number'">? super String</error>> f8 = new Neg02.Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("") {
|
||||
}; //new Foo<Object> created
|
||||
|
||||
Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'">String</error>> f9 = new Neg02.Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("", ""); //new Foo<Integer> created
|
||||
Foo<<error descr="Type parameter '? extends String' is not within its bound; should extend 'java.lang.Number'">? extends String</error>> f10 = new Neg02.Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("", ""); //new Foo<Integer> created
|
||||
Foo<?> f11 = new Neg02.Foo< <error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("", ""); //new Foo<Object> created
|
||||
Foo<<error descr="Type parameter '? super String' is not within its bound; should extend 'java.lang.Number'">? super String</error>> f12 = new Neg02.Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("", ""); //new Foo<Object> created
|
||||
|
||||
Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'">String</error>> f13 = new Neg02.Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("", "") {
|
||||
}; //new Foo<Integer> created
|
||||
Foo<<error descr="Type parameter '? extends String' is not within its bound; should extend 'java.lang.Number'">? extends String</error>> f14 = new Neg02.Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("", "") {
|
||||
}; //new Foo<Integer> created
|
||||
Foo<?> f15 = new Neg02.Foo< <error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("", "") {
|
||||
}; //new Foo<Object> created
|
||||
Foo<<error descr="Type parameter '? super String' is not within its bound; should extend 'java.lang.Number'">? super String</error>> f16 = new Neg02.Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("", "") {
|
||||
}; //new Foo<Object> created
|
||||
Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'">String</error>> f5 = new Neg02.Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("", "");
|
||||
Foo<<error descr="Type parameter '? extends String' is not within its bound; should extend 'java.lang.Number'">? extends String</error>> f6 = new Neg02.Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("", "");
|
||||
Foo<?> f7 = new Neg02.Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("", "");
|
||||
Foo<<error descr="Type parameter '? super String' is not within its bound; should extend 'java.lang.Number'">? super String</error>> f8 = new Neg02.Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("", "");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+35
-65
@@ -1,73 +1,43 @@
|
||||
class Neg03<U> {
|
||||
|
||||
class Foo<V extends Number> {
|
||||
Foo(V x) {}
|
||||
<Z> Foo(V x, Z z) {}
|
||||
}
|
||||
class Foo<V extends Number> {
|
||||
Foo(V x) {}
|
||||
<Z> Foo(V x, Z z) {}
|
||||
}
|
||||
|
||||
void testSimple() {
|
||||
Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'">String</error>> f1 = new Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>(""); //new Foo<Integer> created
|
||||
Foo<<error descr="Type parameter '? extends String' is not within its bound; should extend 'java.lang.Number'">? extends String</error>> f2 = new Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>(""); //new Foo<Integer> created
|
||||
Foo<?> f3 = new Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>(""); //new Foo<Object> created
|
||||
Foo<<error descr="Type parameter '? super String' is not within its bound; should extend 'java.lang.Number'">? super String</error>> f4 = new Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>(""); //new Foo<Object> created
|
||||
void testSimple() {
|
||||
Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'">String</error>> f1 = new Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("");
|
||||
Foo<<error descr="Type parameter '? extends String' is not within its bound; should extend 'java.lang.Number'">? extends String</error>> f2 = new Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("");
|
||||
Foo<?> f3 = new Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("");
|
||||
Foo<<error descr="Type parameter '? super String' is not within its bound; should extend 'java.lang.Number'">? super String</error>> f4 = new Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("");
|
||||
|
||||
Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'">String</error>> f5 = new Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>(""){}; //new Foo<Integer> created
|
||||
Foo<<error descr="Type parameter '? extends String' is not within its bound; should extend 'java.lang.Number'">? extends String</error>> f6 = new Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>(""){}; //new Foo<Integer> created
|
||||
Foo<?> f7 = new Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>(""){}; //new Foo<Object> created
|
||||
Foo<<error descr="Type parameter '? super String' is not within its bound; should extend 'java.lang.Number'">? super String</error>> f8 = new Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>(""){}; //new Foo<Object> created
|
||||
Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'">String</error>> f5 = new Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("", "");
|
||||
Foo<<error descr="Type parameter '? extends String' is not within its bound; should extend 'java.lang.Number'">? extends String</error>> f6 = new Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("", "");
|
||||
Foo<?> f7 = new Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("", "");
|
||||
Foo<<error descr="Type parameter '? super String' is not within its bound; should extend 'java.lang.Number'">? super String</error>> f8 = new Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("", "");
|
||||
}
|
||||
|
||||
Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'">String</error>> f9 = new Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("", ""); //new Foo<Integer> created
|
||||
Foo<<error descr="Type parameter '? extends String' is not within its bound; should extend 'java.lang.Number'">? extends String</error>> f10 = new Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("", ""); //new Foo<Integer> created
|
||||
Foo<?> f11 = new Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("", ""); //new Foo<Object> created
|
||||
Foo<<error descr="Type parameter '? super String' is not within its bound; should extend 'java.lang.Number'">? super String</error>> f12 = new Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("", ""); //new Foo<Object> created
|
||||
void testQualified_1() {
|
||||
Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'">String</error>> f1 = new Neg03<U>.Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("");
|
||||
Foo<<error descr="Type parameter '? extends String' is not within its bound; should extend 'java.lang.Number'">? extends String</error>> f2 = new Neg03<U>.Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("");
|
||||
Foo<?> f3 = new Neg03<U>.Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("");
|
||||
Foo<<error descr="Type parameter '? super String' is not within its bound; should extend 'java.lang.Number'">? super String</error>> f4 = new Neg03<U>.Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("");
|
||||
|
||||
Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'">String</error>> f13 = new Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("", ""){}; //new Foo<Integer> created
|
||||
Foo<<error descr="Type parameter '? extends String' is not within its bound; should extend 'java.lang.Number'">? extends String</error>> f14 = new Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("", ""){}; //new Foo<Integer> created
|
||||
Foo<?> f15 = new Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("", ""){}; //new Foo<Object> created
|
||||
Foo<<error descr="Type parameter '? super String' is not within its bound; should extend 'java.lang.Number'">? super String</error>> f16 = new Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("", ""){}; //new Foo<Object> created
|
||||
}
|
||||
Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'">String</error>> f5 = new Neg03<U>.Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("", "");
|
||||
Foo<<error descr="Type parameter '? extends String' is not within its bound; should extend 'java.lang.Number'">? extends String</error>> f6 = new Neg03<U>.Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("", "");
|
||||
Foo<?> f7 = new Neg03<U>.Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("", "");
|
||||
Foo<<error descr="Type parameter '? super String' is not within its bound; should extend 'java.lang.Number'">? super String</error>> f8 = new Neg03<U>.Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("", "");
|
||||
}
|
||||
|
||||
void testQualified_1() {
|
||||
Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'">String</error>> f1 = new Neg03<U>.Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>(""); //new Foo<Integer> created
|
||||
Foo<<error descr="Type parameter '? extends String' is not within its bound; should extend 'java.lang.Number'">? extends String</error>> f2 = new Neg03<U>.Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>(""); //new Foo<Integer> created
|
||||
Foo<?> f3 = new Neg03<U>.Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>(""); //new Foo<Object> created
|
||||
Foo<<error descr="Type parameter '? super String' is not within its bound; should extend 'java.lang.Number'">? super String</error>> f4 = new Neg03<U>.Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>(""); //new Foo<Object> created
|
||||
void testQualified_2(Neg03<U> n) {
|
||||
Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'">String</error>> f1 = n.new Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("");
|
||||
Foo<<error descr="Type parameter '? extends String' is not within its bound; should extend 'java.lang.Number'">? extends String</error>> f2 = n.new Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("");
|
||||
Foo<?> f3 = n.new Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("");
|
||||
Foo<<error descr="Type parameter '? super String' is not within its bound; should extend 'java.lang.Number'">? super String</error>> f4 = n.new Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("");
|
||||
|
||||
Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'">String</error>> f5 = new Neg03<U>.Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>(""){}; //new Foo<Integer> created
|
||||
Foo<<error descr="Type parameter '? extends String' is not within its bound; should extend 'java.lang.Number'">? extends String</error>> f6 = new Neg03<U>.Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>(""){}; //new Foo<Integer> created
|
||||
Foo<?> f7 = new Neg03<U>.Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>(""){}; //new Foo<Object> created
|
||||
Foo<<error descr="Type parameter '? super String' is not within its bound; should extend 'java.lang.Number'">? super String</error>> f8 = new Neg03<U>.Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>(""){}; //new Foo<Object> created
|
||||
|
||||
Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'">String</error>> f9 = new Neg03<U>.Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("", ""); //new Foo<Integer> created
|
||||
Foo<<error descr="Type parameter '? extends String' is not within its bound; should extend 'java.lang.Number'">? extends String</error>> f10 = new Neg03<U>.Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("", ""); //new Foo<Integer> created
|
||||
Foo<?> f11 = new Neg03<U>.Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("", ""); //new Foo<Object> created
|
||||
Foo<<error descr="Type parameter '? super String' is not within its bound; should extend 'java.lang.Number'">? super String</error>> f12 = new Neg03<U>.Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("", ""); //new Foo<Object> created
|
||||
|
||||
Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'">String</error>> f13 = new Neg03<U>.Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("", ""){}; //new Foo<Integer> created
|
||||
Foo<<error descr="Type parameter '? extends String' is not within its bound; should extend 'java.lang.Number'">? extends String</error>> f14 = new Neg03<U>.Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("", ""){}; //new Foo<Integer> created
|
||||
Foo<?> f15 = new Neg03<U>.Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("", ""){}; //new Foo<Object> created
|
||||
Foo<<error descr="Type parameter '? super String' is not within its bound; should extend 'java.lang.Number'">? super String</error>> f16 = new Neg03<U>.Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("", ""){}; //new Foo<Object> created
|
||||
}
|
||||
|
||||
void testQualified_2(Neg03<U> n) {
|
||||
Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'">String</error>> f1 = n.new Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>(""); //new Foo<Integer> created
|
||||
Foo<<error descr="Type parameter '? extends String' is not within its bound; should extend 'java.lang.Number'">? extends String</error>> f2 = n.new Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>(""); //new Foo<Integer> created
|
||||
Foo<?> f3 = n.new Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>(""); //new Foo<Integer> created
|
||||
Foo<<error descr="Type parameter '? super String' is not within its bound; should extend 'java.lang.Number'">? super String</error>> f4 = n.new Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>(""); //new Foo<Integer> created
|
||||
|
||||
Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'">String</error>> f5 = n.new Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>(""){}; //new Foo<Integer> created
|
||||
Foo<<error descr="Type parameter '? extends String' is not within its bound; should extend 'java.lang.Number'">? extends String</error>> f6 = n.new Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>(""){}; //new Foo<Integer> created
|
||||
Foo<?> f7 = n.new Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>(""){}; //new Foo<Integer> created
|
||||
Foo<<error descr="Type parameter '? super String' is not within its bound; should extend 'java.lang.Number'">? super String</error>> f8 = n.new Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>(""){}; //new Foo<Integer> created
|
||||
|
||||
Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'">String</error>> f9 = n.new Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("", ""); //new Foo<Integer> created
|
||||
Foo<<error descr="Type parameter '? extends String' is not within its bound; should extend 'java.lang.Number'">? extends String</error>> f10 = n.new Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("", ""); //new Foo<Integer> created
|
||||
Foo<?> f11 = n.new Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("", ""); //new Foo<Integer> created
|
||||
Foo<<error descr="Type parameter '? super String' is not within its bound; should extend 'java.lang.Number'">? super String</error>> f12 = n.new Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("", ""); //new Foo<Integer> created
|
||||
|
||||
Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'">String</error>> f13 = n.new Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("", ""){}; //new Foo<Integer> created
|
||||
Foo<<error descr="Type parameter '? extends String' is not within its bound; should extend 'java.lang.Number'">? extends String</error>> f14 = n.new Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("", ""){}; //new Foo<Integer> created
|
||||
Foo<?> f15 = n.new Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("", ""){}; //new Foo<Integer> created
|
||||
Foo<<error descr="Type parameter '? super String' is not within its bound; should extend 'java.lang.Number'">? super String</error>> f16 = n.new Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("", ""){}; //new Foo<Integer> created
|
||||
}
|
||||
}
|
||||
Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'">String</error>> f5 = n.new Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("", "");
|
||||
Foo<<error descr="Type parameter '? extends String' is not within its bound; should extend 'java.lang.Number'">? extends String</error>> f6 = n.new Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("", "");
|
||||
Foo<?> f7 = n.new Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("", "");
|
||||
Foo<<error descr="Type parameter '? super String' is not within its bound; should extend 'java.lang.Number'">? super String</error>> f8 = n.new Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("", "");
|
||||
}
|
||||
}
|
||||
|
||||
+8
-18
@@ -5,24 +5,14 @@ class Neg04 {
|
||||
Foo(V x) {}
|
||||
<Z> Foo(V x, Z z) {}
|
||||
}
|
||||
Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'">String</error>> n1 = new Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>(""); //new Foo<Integer> created
|
||||
Foo<<error descr="Type parameter '? extends String' is not within its bound; should extend 'java.lang.Number'">? extends String</error>> n2 = new Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>(""); //new Foo<Integer> created
|
||||
Foo<?> n3 = new Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>(""); //new Foo<Object> created
|
||||
Foo<<error descr="Type parameter '? super String' is not within its bound; should extend 'java.lang.Number'">? super String</error>> n4 = new Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>(""); //new Foo<Object> created
|
||||
Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'">String</error>> n1 = new Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("");
|
||||
Foo<<error descr="Type parameter '? extends String' is not within its bound; should extend 'java.lang.Number'">? extends String</error>> n2 = new Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("");
|
||||
Foo<?> n3 = new Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("");
|
||||
Foo<<error descr="Type parameter '? super String' is not within its bound; should extend 'java.lang.Number'">? super String</error>> n4 = new Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("");
|
||||
|
||||
Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'">String</error>> n5 = new Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>(""){}; //new Foo<Integer> created
|
||||
Foo<<error descr="Type parameter '? extends String' is not within its bound; should extend 'java.lang.Number'">? extends String</error>> n6 = new Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>(""){}; //new Foo<Integer> created
|
||||
Foo<?> n7 = new Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>(""){}; //new Foo<Object> created
|
||||
Foo<<error descr="Type parameter '? super String' is not within its bound; should extend 'java.lang.Number'">? super String</error>> n8 = new Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>(""){}; //new Foo<Object> created
|
||||
|
||||
Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'">String</error>> n9 = new Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("", ""); //new Foo<Integer> created
|
||||
Foo<<error descr="Type parameter '? extends String' is not within its bound; should extend 'java.lang.Number'">? extends String</error>> n10 = new Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("", ""); //new Foo<Integer> created
|
||||
Foo<?> n11 = new Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("", ""); //new Foo<Object> created
|
||||
Foo<<error descr="Type parameter '? super String' is not within its bound; should extend 'java.lang.Number'">? super String</error>> n12 = new Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("", ""); //new Foo<Object> created
|
||||
|
||||
Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'">String</error>> n13 = new Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("", ""){}; //new Foo<Integer> created
|
||||
Foo<<error descr="Type parameter '? extends String' is not within its bound; should extend 'java.lang.Number'">? extends String</error>> n14 = new Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("", ""){}; //new Foo<Integer> created
|
||||
Foo<?> n15 = new Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("", ""){}; //new Foo<Object> created
|
||||
Foo<<error descr="Type parameter '? super String' is not within its bound; should extend 'java.lang.Number'">? super String</error>> n16 = new Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("", ""){}; //new Foo<Object> created
|
||||
Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'">String</error>> n5 = new Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("", "");
|
||||
Foo<<error descr="Type parameter '? extends String' is not within its bound; should extend 'java.lang.Number'">? extends String</error>> n6 = new Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("", "");
|
||||
Foo<?> n7 = new Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("", "");
|
||||
Foo<<error descr="Type parameter '? super String' is not within its bound; should extend 'java.lang.Number'">? super String</error>> n8 = new Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("", "");
|
||||
}
|
||||
}
|
||||
|
||||
+25
-45
@@ -1,51 +1,31 @@
|
||||
class Neg05<U> {
|
||||
|
||||
class Foo<V> {
|
||||
Foo(V x) {}
|
||||
<Z> Foo(V x, Z z) {}
|
||||
}
|
||||
class Foo<V> {
|
||||
Foo(V x) {}
|
||||
<Z> Foo(V x, Z z) {}
|
||||
}
|
||||
|
||||
void testRare_1() {
|
||||
Neg05<?>.Foo<String> f1 = new Neg05.Foo<error><></error>(""); //new Foo<Integer> created
|
||||
Neg05<?>.Foo<? extends String> f2 = new Neg05.Foo<error><></error>(""); //new Foo<Integer> created
|
||||
Neg05<?>.Foo<?> f3 = new Neg05.Foo<error><></error>(""); //new Foo<Object> created
|
||||
Neg05<?>.Foo<? super String> f4 = new Neg05.Foo<error><></error>(""); //new Foo<Object> created
|
||||
void testRare_1() {
|
||||
Neg05<?>.Foo<String> f1 = new Neg05.Foo<error descr="Type arguments given on a raw type"><></error>("");
|
||||
Neg05<?>.Foo<? extends String> f2 = new Neg05.Foo<error descr="Type arguments given on a raw type"><></error>("");
|
||||
Neg05<?>.Foo<?> f3 = new Neg05.Foo<error descr="Type arguments given on a raw type"><></error>("");
|
||||
Neg05<?>.Foo<? super String> f4 = new Neg05.Foo<error descr="Type arguments given on a raw type"><></error>("");
|
||||
|
||||
Neg05<?>.Foo<String> f5 = new Neg05.Foo<error><></error>(""){}; //new Foo<Integer> created
|
||||
Neg05<?>.Foo<? extends String> f6 = new Neg05.Foo<error><></error>(""){}; //new Foo<Integer> created
|
||||
Neg05<?>.Foo<?> f7 = new Neg05.Foo<error><></error>(""){}; //new Foo<Object> created
|
||||
Neg05<?>.Foo<? super String> f8 = new Neg05.Foo<error><></error>(""){}; //new Foo<Object> created
|
||||
Neg05<?>.Foo<String> f5 = new Neg05.Foo<error descr="Type arguments given on a raw type"><></error>("", "");
|
||||
Neg05<?>.Foo<? extends String> f6 = new Neg05.Foo<error descr="Type arguments given on a raw type"><></error>("", "");
|
||||
Neg05<?>.Foo<?> f7 = new Neg05.Foo<error descr="Type arguments given on a raw type"><></error>("", "");
|
||||
Neg05<?>.Foo<? super String> f8 = new Neg05.Foo<error descr="Type arguments given on a raw type"><></error>("", "");
|
||||
}
|
||||
|
||||
Neg05<?>.Foo<String> f9 = new Neg05.Foo<error><></error>("", ""); //new Foo<Integer> created
|
||||
Neg05<?>.Foo<? extends String> f10 = new Neg05.Foo<error><></error>("", ""); //new Foo<Integer> created
|
||||
Neg05<?>.Foo<?> f11 = new Neg05.Foo<error><></error>("", ""); //new Foo<Object> created
|
||||
Neg05<?>.Foo<? super String> f12 = new Neg05.Foo<error><></error>("", ""); //new Foo<Object> created
|
||||
void testRare_2(Neg05 n) {
|
||||
Neg05<?>.Foo<String> f1 = n.new Foo<error descr="Type arguments given on a raw type"><></error>("");
|
||||
Neg05<?>.Foo<? extends String> f2 = n.new Foo<error descr="Type arguments given on a raw type"><></error>("");
|
||||
Neg05<?>.Foo<?> f3 = n.new Foo<error descr="Type arguments given on a raw type"><></error>("");
|
||||
Neg05<?>.Foo<? super String> f4 = n.new Foo<error descr="Type arguments given on a raw type"><></error>("");
|
||||
|
||||
Neg05<?>.Foo<String> f13 = new Neg05.Foo<error><></error>("", ""){}; //new Foo<Integer> created
|
||||
Neg05<?>.Foo<? extends String> f14 = new Neg05.Foo<error><></error>("", ""){}; //new Foo<Integer> created
|
||||
Neg05<?>.Foo<?> f15 = new Neg05.Foo<error><></error>("", ""){}; //new Foo<Object> created
|
||||
Neg05<?>.Foo<? super String> f16 = new Neg05.Foo<error><></error>("", ""){}; //new Foo<Object> created
|
||||
}
|
||||
|
||||
void testRare_2(Neg05 n) {
|
||||
Neg05<?>.Foo<String> f1 = n.new Foo<error><></error>(""); //new Foo<Integer> created
|
||||
Neg05<?>.Foo<? extends String> f2 = n.new Foo<error><></error>(""); //new Foo<Integer> created
|
||||
Neg05<?>.Foo<?> f3 = n.new Foo<error><></error>(""); //new Foo<Integer> created
|
||||
Neg05<?>.Foo<? super String> f4 = n.new Foo<error><></error>(""); //new Foo<Integer> created
|
||||
|
||||
Neg05<?>.Foo<String> f5 = n.new Foo<error><></error>(""){}; //new Foo<Integer> created
|
||||
Neg05<?>.Foo<? extends String> f6 = n.new Foo<error><></error>(""){}; //new Foo<Integer> created
|
||||
Neg05<?>.Foo<?> f7 = n.new Foo<error><></error>(""){}; //new Foo<Integer> created
|
||||
Neg05<?>.Foo<? super String> f8 = n.new Foo<error><></error>(""){}; //new Foo<Integer> created
|
||||
|
||||
Neg05<?>.Foo<String> f9 = n.new Foo<error><></error>("", ""); //new Foo<Integer> created
|
||||
Neg05<?>.Foo<? extends String> f10 = n.new Foo<error><></error>("", ""); //new Foo<Integer> created
|
||||
Neg05<?>.Foo<?> f11 = n.new Foo<error><></error>("", ""); //new Foo<Integer> created
|
||||
Neg05<?>.Foo<? super String> f12 = n.new Foo<error><></error>("", ""); //new Foo<Integer> created
|
||||
|
||||
Neg05<?>.Foo<String> f13 = n.new Foo<error><></error>("", ""){}; //new Foo<Integer> created
|
||||
Neg05<?>.Foo<? extends String> f14 = n.new Foo<error><></error>("", ""){}; //new Foo<Integer> created
|
||||
Neg05<?>.Foo<?> f15 = n.new Foo<error><></error>("", ""){}; //new Foo<Integer> created
|
||||
Neg05<?>.Foo<? super String> f16 = n.new Foo<error><></error>("", ""){}; //new Foo<Integer> created
|
||||
}
|
||||
}
|
||||
Neg05<?>.Foo<String> f5 = n.new Foo<error descr="Type arguments given on a raw type"><></error>("", "");
|
||||
Neg05<?>.Foo<? extends String> f6 = n.new Foo<error descr="Type arguments given on a raw type"><></error>("", "");
|
||||
Neg05<?>.Foo<?> f7 = n.new Foo<error descr="Type arguments given on a raw type"><></error>("", "");
|
||||
Neg05<?>.Foo<? super String> f8 = n.new Foo<error descr="Type arguments given on a raw type"><></error>("", "");
|
||||
}
|
||||
}
|
||||
-4
@@ -1,11 +1,7 @@
|
||||
class Neg06 {
|
||||
interface ISuperFoo<X> {}
|
||||
interface IFoo<X extends Number> extends ISuperFoo<X> {}
|
||||
|
||||
static class CSuperFoo<X> {}
|
||||
static class CFoo<X extends Number> extends CSuperFoo<X> {}
|
||||
|
||||
ISuperFoo<String> isf = new IFoo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>() {};
|
||||
CSuperFoo<String> csf1 = new CFoo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>();
|
||||
CSuperFoo<String> csf2 = new CFoo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>() {};
|
||||
}
|
||||
|
||||
-1
@@ -5,5 +5,4 @@ class Neg07 {
|
||||
}
|
||||
|
||||
SuperFoo<String> sf1 = new Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("");
|
||||
SuperFoo<String> sf2 = new Foo<<error descr="Type parameter 'java.lang.String' is not within its bound; should extend 'java.lang.Number'"></error>>("") {};
|
||||
}
|
||||
|
||||
+3
-18
@@ -1,20 +1,5 @@
|
||||
class Neg08 {
|
||||
static class Foo<X> {
|
||||
Foo(X x) { }
|
||||
}
|
||||
|
||||
static class DoubleFoo<X,Y> {
|
||||
DoubleFoo(X x,Y y) { }
|
||||
}
|
||||
|
||||
static class TripleFoo<X,Y,Z> {
|
||||
TripleFoo(X x,Y y,Z z) { }
|
||||
}
|
||||
|
||||
Foo<? extends Integer> fi = new Foo<>(1);
|
||||
Foo<?> fw = new Foo<<error descr="Cannot infer type arguments for Foo<> because type Foo<? extends Integer> inferred is not allowed in current context"></error>>(fi);
|
||||
Foo<? extends Double> fd = new Foo<>(3.0);
|
||||
DoubleFoo<?,?> dw = new DoubleFoo<<error descr="Cannot infer type arguments for DoubleFoo<> because type Foo<? extends Integer> inferred is not allowed in current context"></error>>(fi,fd);
|
||||
Foo<String> fs = new Foo<>("one");
|
||||
TripleFoo<?,?,?> tw = new TripleFoo<<error descr="Cannot infer type arguments for TripleFoo<> because type Foo<? extends Integer> inferred is not allowed in current context"></error>>(fi,fd,fs);
|
||||
public static void main(String[] args) {
|
||||
String s = new String<<error descr="Diamond operator is not applicable for non-parameterized types"></error>>("foo");
|
||||
}
|
||||
}
|
||||
|
||||
+12
-9
@@ -1,12 +1,15 @@
|
||||
class Neg09 {
|
||||
static class Foo<X extends Number & Comparable<Number>> {}
|
||||
static class DoubleFoo<X extends Number & Comparable<Number>,
|
||||
Y extends Number & Comparable<Number>> {}
|
||||
static class TripleFoo<X extends Number & Comparable<Number>,
|
||||
Y extends Number & Comparable<Number>,
|
||||
Z> {}
|
||||
class Member<X> {}
|
||||
|
||||
Foo<?> fw = new Foo<<error descr="Cannot infer type arguments for Foo<> because type ? extends Number inferred is not allowed in current context"></error>>();
|
||||
DoubleFoo<?,?> dw = new DoubleFoo<<error descr="Cannot infer type arguments for DoubleFoo<> because type ? extends Number inferred is not allowed in current context"></error>>();
|
||||
TripleFoo<?,?,?> tw = new TripleFoo<<error descr="Cannot infer type arguments for TripleFoo<> because type ? extends Number inferred is not allowed in current context"></error>>();
|
||||
static class Nested<X> {}
|
||||
|
||||
void testSimple() {
|
||||
Member<?> m1 = new Member<<error descr="Cannot use ''<>'' with anonymous inner classes"></error>>() {};
|
||||
Nested<?> m2 = new Nested<<error descr="Cannot use ''<>'' with anonymous inner classes"></error>>() {};
|
||||
}
|
||||
|
||||
void testQualified() {
|
||||
Member<?> m1 = this.new Member<<error descr="Cannot use ''<>'' with anonymous inner classes"></error>>() {};
|
||||
Nested<?> m2 = new Neg09.Nested<<error descr="Cannot use ''<>'' with anonymous inner classes"></error>>() {};
|
||||
}
|
||||
}
|
||||
|
||||
+17
-27
@@ -1,33 +1,23 @@
|
||||
public class Pos01<X> {
|
||||
|
||||
Pos01(X x) {}
|
||||
Pos01(X x) {}
|
||||
|
||||
<Z> Pos01(X x, Z z) {}
|
||||
<Z> Pos01(X x, Z z) {}
|
||||
|
||||
void test() {
|
||||
Pos01<Integer> p1 = new Pos01<>(1); //new Foo<Integer> created
|
||||
Pos01<? extends Integer> p2 = new Pos01<>(1); //new Foo<Integer> created
|
||||
Pos01<?> p3 = new Pos01<>(1); //new Foo<Object> created
|
||||
Pos01<? super Integer> p4 = new Pos01<>(1); //new Foo<Object> created
|
||||
void test() {
|
||||
Pos01<Integer> p1 = new Pos01<>(1);
|
||||
Pos01<? extends Integer> p2 = new Pos01<>(1);
|
||||
Pos01<?> p3 = new Pos01<>(1);
|
||||
Pos01<? super Integer> p4 = new Pos01<>(1);
|
||||
|
||||
Pos01<Integer> p5 = new Pos01<>(1){}; //new Foo<Integer> created
|
||||
Pos01<? extends Integer> p6 = new Pos01<>(1){}; //new Foo<Integer> created
|
||||
Pos01<?> p7 = new Pos01<>(1){}; //new Foo<Object> created
|
||||
Pos01<? super Integer> p8 = new Pos01<>(1){}; //new Foo<Object> created
|
||||
Pos01<Integer> p5 = new Pos01<>(1, "");
|
||||
Pos01<? extends Integer> p6 = new Pos01<>(1, "");
|
||||
Pos01<?> p7 = new Pos01<>(1, "");
|
||||
Pos01<? super Integer> p8 = new Pos01<>(1, "");
|
||||
}
|
||||
|
||||
Pos01<Integer> p9 = new Pos01<>(1, ""); //new Foo<Integer> created
|
||||
Pos01<? extends Integer> p10 = new Pos01<>(1, ""); //new Foo<Integer> created
|
||||
Pos01<?> p11 = new Pos01<>(1, ""); //new Foo<Object> created
|
||||
Pos01<? super Integer> p12 = new Pos01<>(1, ""); //new Foo<Object> created
|
||||
|
||||
Pos01<Integer> p13 = new Pos01<>(1, ""){}; //new Foo<Integer> created
|
||||
Pos01<? extends Integer> p14= new Pos01<>(1, ""){}; //new Foo<Integer> created
|
||||
Pos01<?> p15 = new Pos01<>(1, ""){}; //new Foo<Object> created
|
||||
Pos01<? super Integer> p16 = new Pos01<>(1, ""){}; //new Foo<Object> created
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
Pos01<String> p1 = new Pos01<>("");
|
||||
p1.test();
|
||||
}
|
||||
}
|
||||
public static void main(String[] args) {
|
||||
Pos01<String> p1 = new Pos01<>("");
|
||||
p1.test();
|
||||
}
|
||||
}
|
||||
+30
-50
@@ -1,57 +1,37 @@
|
||||
public class Pos02 {
|
||||
|
||||
static class Foo<X> {
|
||||
Foo(X x) {}
|
||||
<Z> Foo(X x, Z z) {}
|
||||
}
|
||||
static class Foo<X> {
|
||||
Foo(X x) {}
|
||||
<Z> Foo(X x, Z z) {}
|
||||
}
|
||||
|
||||
void testSimple() {
|
||||
Foo<Integer> f1 = new Foo<>(1); //new Foo<Integer> created
|
||||
Foo<? extends Integer> f2 = new Foo<>(1); //new Foo<Integer> created
|
||||
Foo<?> f3 = new Foo<>(1); //new Foo<Object> created
|
||||
Foo<? super Integer> f4 = new Foo<>(1); //new Foo<Object> created
|
||||
void testSimple() {
|
||||
Foo<Integer> f1 = new Foo<>(1);
|
||||
Foo<? extends Integer> f2 = new Foo<>(1);
|
||||
Foo<?> f3 = new Foo<>(1);
|
||||
Foo<? super Integer> f4 = new Foo<>(1);
|
||||
|
||||
Foo<Integer> f5 = new Foo<>(1){}; //new Foo<Integer> created
|
||||
Foo<? extends Integer> f6 = new Foo<>(1){}; //new Foo<Integer> created
|
||||
Foo<?> f7 = new Foo<>(1){}; //new Foo<Object> created
|
||||
Foo<? super Integer> f8 = new Foo<>(1){}; //new Foo<Object> created
|
||||
Foo<Integer> f5 = new Foo<>(1, "");
|
||||
Foo<? extends Integer> f6 = new Foo<>(1, "");
|
||||
Foo<?> f7 = new Foo<>(1, "");
|
||||
Foo<? super Integer> f8 = new Foo<>(1, "");
|
||||
}
|
||||
|
||||
Foo<Integer> f9 = new Foo<>(1, ""); //new Foo<Integer> created
|
||||
Foo<? extends Integer> f10 = new Foo<>(1, ""); //new Foo<Integer> created
|
||||
Foo<?> f11 = new Foo<>(1, ""); //new Foo<Object> created
|
||||
Foo<? super Integer> f12 = new Foo<>(1, ""); //new Foo<Object> created
|
||||
void testQualified() {
|
||||
Foo<Integer> f1 = new Pos02.Foo<>(1);
|
||||
Foo<? extends Integer> f2 = new Pos02.Foo<>(1);
|
||||
Foo<?> f3 = new Pos02.Foo<>(1);
|
||||
Foo<? super Integer> f4 = new Pos02.Foo<>(1);
|
||||
|
||||
Foo<Integer> f13 = new Foo<>(1, ""){}; //new Foo<Integer> created
|
||||
Foo<? extends Integer> f14 = new Foo<>(1, ""){}; //new Foo<Integer> created
|
||||
Foo<?> f15 = new Foo<>(1, ""){}; //new Foo<Object> created
|
||||
Foo<? super Integer> f16 = new Foo<>(1, ""){}; //new Foo<Object> created
|
||||
}
|
||||
Foo<Integer> f5 = new Pos02.Foo<>(1, "");
|
||||
Foo<? extends Integer> f6 = new Pos02.Foo<>(1, "");
|
||||
Foo<?> f7 = new Pos02.Foo<>(1, "");
|
||||
Foo<? super Integer> f8 = new Pos02.Foo<>(1, "");
|
||||
}
|
||||
|
||||
void testQualified() {
|
||||
Foo<Integer> f1 = new Pos02.Foo<>(1); //new Foo<Integer> created
|
||||
Foo<? extends Integer> f2 = new Pos02.Foo<>(1); //new Foo<Integer> created
|
||||
Foo<?> f3 = new Pos02.Foo<>(1); //new Foo<Object> created
|
||||
Foo<? super Integer> f4 = new Pos02.Foo< >(1); //new Foo<Object> created
|
||||
|
||||
Foo<Integer> f5 = new Pos02.Foo<>(1){}; //new Foo<Integer> created
|
||||
Foo<? extends Integer> f6 = new Pos02.Foo<>(1){}; //new Foo<Integer> created
|
||||
Foo<?> f7 = new Pos02.Foo<>(1){}; //new Foo<Object> created
|
||||
Foo<? super Integer> f8 = new Pos02.Foo<>(1){}; //new Foo<Object> created
|
||||
|
||||
Foo<Integer> f9 = new Pos02.Foo<>(1, ""); //new Foo<Integer> created
|
||||
Foo<? extends Integer> f10 = new Pos02.Foo<>(1, ""); //new Foo<Integer> created
|
||||
Foo<?> f11 = new Pos02.Foo<>(1, ""); //new Foo<Object> created
|
||||
Foo<? super Integer> f12 = new Pos02.Foo<>(1, ""); //new Foo<Object> created
|
||||
|
||||
Foo<Integer> f13 = new Pos02.Foo<>(1, ""){}; //new Foo<Integer> created
|
||||
Foo<? extends Integer> f14 = new Pos02.Foo<>(1, ""){}; //new Foo<Integer> created
|
||||
Foo<?> f15 = new Pos02.Foo<>(1, ""){}; //new Foo<Object> created
|
||||
Foo<? super Integer> f16 = new Pos02.Foo<>(1, ""){}; //new Foo<Object> created
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
Pos02 p2 = new Pos02();
|
||||
p2.testSimple();
|
||||
p2.testQualified();
|
||||
}
|
||||
}
|
||||
public static void main(String[] args) {
|
||||
Pos02 p2 = new Pos02();
|
||||
p2.testSimple();
|
||||
p2.testQualified();
|
||||
}
|
||||
}
|
||||
+41
-71
@@ -1,80 +1,50 @@
|
||||
public class Pos03<U> {
|
||||
|
||||
class Foo<V> {
|
||||
Foo(V x) {}
|
||||
<Z> Foo(V x, Z z) {}
|
||||
}
|
||||
class Foo<V> {
|
||||
Foo(V x) {}
|
||||
<Z> Foo(V x, Z z) {}
|
||||
}
|
||||
|
||||
void testSimple() {
|
||||
Foo<Integer> f1 = new Foo<>(1); //new Foo<Integer> created
|
||||
Foo<? extends Integer> f2 = new Foo<>(1); //new Foo<Integer> created
|
||||
Foo<?> f3 = new Foo<>(1); //new Foo<Object> created
|
||||
Foo<? super Integer> f4 = new Foo<>(1); //new Foo<Object> created
|
||||
void testSimple() {
|
||||
Foo<Integer> f1 = new Foo<>(1);
|
||||
Foo<? extends Integer> f2 = new Foo<>(1);
|
||||
Foo<?> f3 = new Foo<>(1);
|
||||
Foo<? super Integer> f4 = new Foo<>(1);
|
||||
|
||||
Foo<Integer> f5 = new Foo<>(1){}; //new Foo<Integer> created
|
||||
Foo<? extends Integer> f6 = new Foo<>(1){}; //new Foo<Integer> created
|
||||
Foo<?> f7 = new Foo<>(1){}; //new Foo<Object> created
|
||||
Foo<? super Integer> f8 = new Foo<>(1){}; //new Foo<Object> created
|
||||
Foo<Integer> f5 = new Foo<>(1, "");
|
||||
Foo<? extends Integer> f6 = new Foo<>(1, "");
|
||||
Foo<?> f7 = new Foo<>(1, "");
|
||||
Foo<? super Integer> f8 = new Foo<>(1, "");
|
||||
}
|
||||
|
||||
Foo<Integer> f9 = new Foo<>(1, ""); //new Foo<Integer> created
|
||||
Foo<? extends Integer> f10 = new Foo<>(1, ""); //new Foo<Integer> created
|
||||
Foo<?> f11 = new Foo<>(1, ""); //new Foo<Object> created
|
||||
Foo<? super Integer> f12 = new Foo<>(1, ""); //new Foo<Object> created
|
||||
void testQualified_1() {
|
||||
Foo<Integer> f1 = new Pos03<U>.Foo<>(1);
|
||||
Foo<? extends Integer> f2 = new Pos03<U>.Foo<>(1);
|
||||
Foo<?> f3 = new Pos03<U>.Foo<>(1);
|
||||
Foo<? super Integer> f4 = new Pos03<U>.Foo<>(1);
|
||||
|
||||
Foo<Integer> f13 = new Foo<>(1, ""){}; //new Foo<Integer> created
|
||||
Foo<? extends Integer> f14 = new Foo<>(1, ""){}; //new Foo<Integer> created
|
||||
Foo<?> f15 = new Foo<>(1, ""){}; //new Foo<Object> created
|
||||
Foo<? super Integer> f16 = new Foo<>(1, ""){}; //new Foo<Object> created
|
||||
}
|
||||
Foo<Integer> f5 = new Pos03<U>.Foo<>(1, "");
|
||||
Foo<? extends Integer> f6 = new Pos03<U>.Foo<>(1, "");
|
||||
Foo<?> f7 = new Pos03<U>.Foo<>(1, "");
|
||||
Foo<? super Integer> f8 = new Pos03<U>.Foo<>(1, "");
|
||||
}
|
||||
|
||||
void testQualified_1() {
|
||||
Foo<Integer> f1 = new Pos03<U>.Foo<>(1); //new Foo<Integer> created
|
||||
Foo<? extends Integer> f2 = new Pos03<U>.Foo<>(1); //new Foo<Integer> created
|
||||
Foo<?> f3 = new Pos03<U>.Foo<>(1); //new Foo<Object> created
|
||||
Foo<? super Integer> f4 = new Pos03<U>.Foo<>(1); //new Foo<Object> created
|
||||
void testQualified_2(Pos03<U> p) {
|
||||
Foo<Integer> f1 = p.new Foo<>(1);
|
||||
Foo<? extends Integer> f2 = p.new Foo<>(1);
|
||||
Foo<?> f3 = p.new Foo<>(1);
|
||||
Foo<? super Integer> f4 = p.new Foo<>(1);
|
||||
|
||||
Foo<Integer> f5 = new Pos03<U>.Foo<>(1){}; //new Foo<Integer> created
|
||||
Foo<? extends Integer> f6 = new Pos03<U>.Foo<>(1){}; //new Foo<Integer> created
|
||||
Foo<?> f7 = new Pos03<U>.Foo<>(1){}; //new Foo<Object> created
|
||||
Foo<? super Integer> f8 = new Pos03<U>.Foo<>(1){}; //new Foo<Object> created
|
||||
Foo<Integer> f5 = p.new Foo<>(1, "");
|
||||
Foo<? extends Integer> f6 = p.new Foo<>(1, "");
|
||||
Foo<?> f7 = p.new Foo<>(1, "");
|
||||
Foo<? super Integer> f8 = p.new Foo<>(1, "");
|
||||
}
|
||||
|
||||
Foo<Integer> f9 = new Pos03<U>.Foo<>(1, ""); //new Foo<Integer> created
|
||||
Foo<? extends Integer> f10 = new Pos03<U>.Foo<>(1, ""); //new Foo<Integer> created
|
||||
Foo<?> f11 = new Pos03<U>.Foo<>(1, ""); //new Foo<Object> created
|
||||
Foo<? super Integer> f12 = new Pos03<U>.Foo<>(1, ""); //new Foo<Object> created
|
||||
|
||||
Foo<Integer> f13 = new Pos03<U>.Foo<>(1, ""){}; //new Foo<Integer> created
|
||||
Foo<? extends Integer> f14 = new Pos03<U>.Foo<>(1, ""){}; //new Foo<Integer> created
|
||||
Foo<?> f15 = new Pos03<U>.Foo<>(1, " "){}; //new Foo<Object> created
|
||||
Foo<? super Integer> f16 = new Pos03<U>.Foo<>(1, ""){}; //new Foo<Object> created
|
||||
}
|
||||
|
||||
void testQualified_2(Pos03<U> p) {
|
||||
Foo<Integer> f1 = p.new Foo<>(1); //new Foo<Integer> created
|
||||
Foo<? extends Integer> f2 = p.new Foo<>( 1); //new Foo<Integer> created
|
||||
Foo<?> f3 = p.new Foo<>(1); //new Foo<Object> created
|
||||
Foo<? super Integer> f4 = p.new Foo<>(1); //new Foo<Object> created
|
||||
|
||||
Foo<Integer> f5 = p.new Foo<>(1){}; //new Foo<Integer> created
|
||||
Foo<? extends Integer> f6 = p.new Foo<>(1){}; //new Foo<Integer> created
|
||||
Foo<?> f7 = p.new Foo<>(1){}; //new Foo<Object> created
|
||||
Foo<? super Integer> f8 = p.new Foo<>(1){}; //new Foo<Object> created
|
||||
|
||||
Foo<Integer> f9 = p.new Foo<>(1, ""); //new Foo<Integer> created
|
||||
Foo<? extends Integer> f10 = p.new Foo<>(1, ""); //new Foo<Integer> created
|
||||
Foo<?> f11 = p.new Foo<>(1, ""); //new Foo<Object> created
|
||||
Foo<? super Integer> f12 = p.new Foo<>(1, ""); //new Foo<Object> created
|
||||
|
||||
Foo<Integer> f13 = p.new Foo<>(1, ""){}; //new Foo<Integer> created
|
||||
Foo<? extends Integer> f14 = p.new Foo<>(1, ""){}; //new Foo<Integer> created
|
||||
Foo<?> f15 = p.new Foo<>(1, ""){}; //new Foo<Object> created
|
||||
Foo<? super Integer> f16 = p.new Foo<>(1, ""){}; //new Foo<Object> created
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
Pos03<String> p3 = new Pos03<>( );
|
||||
p3.testSimple();
|
||||
p3.testQualified_1();
|
||||
p3.testQualified_2(p3);
|
||||
}
|
||||
}
|
||||
public static void main(String[] args) {
|
||||
Pos03<String> p3 = new Pos03<>();
|
||||
p3.testSimple();
|
||||
p3.testQualified_1();
|
||||
p3.testQualified_2(p3);
|
||||
}
|
||||
}
|
||||
|
||||
+10
-31
@@ -2,39 +2,18 @@ public class Pos04<U> {
|
||||
|
||||
void test() {
|
||||
class Foo<V> {
|
||||
Foo(V x) {
|
||||
}
|
||||
|
||||
<Z> Foo(V x, Z z) {
|
||||
}
|
||||
Foo(V x) {}
|
||||
<Z> Foo(V x, Z z) {}
|
||||
}
|
||||
Foo<Integer> p1 = new Foo< >(1); //new Foo<Integer> created
|
||||
Foo<? extends Integer> p2 = new Foo< >(1); //new Foo<Integer> created
|
||||
Foo<?> p3 = new Foo< >(1); //new Foo<Object> created
|
||||
Foo<? super Integer> p4 = new Foo< >(1); //new Foo<Object> created
|
||||
Foo<Integer> p1 = new Foo<>(1);
|
||||
Foo<? extends Integer> p2 = new Foo<>(1);
|
||||
Foo<?> p3 = new Foo<>(1);
|
||||
Foo<? super Integer> p4 = new Foo<>(1);
|
||||
|
||||
Foo<Integer> p5 = new Foo< >(1) {
|
||||
}; //new Foo<Integer> created
|
||||
Foo<? extends Integer> p6 = new Foo< >(1) {
|
||||
}; //new Foo<Integer> created
|
||||
Foo<?> p7 = new Foo< >(1) {
|
||||
}; //new Foo<Object> created
|
||||
Foo<? super Integer> p8 = new Foo< >(1) {
|
||||
}; //new Foo<Object> created
|
||||
|
||||
Foo<Integer> p9 = new Foo< >(1, ""); //new Foo<Integer> created
|
||||
Foo<? extends Integer> p10 = new Foo< >(1, ""); //new Foo<Integer> created
|
||||
Foo<?> p11 = new Foo< >(1, ""); //new Foo<Object> created
|
||||
Foo<? super Integer> p12 = new Foo< >(1, ""); //new Foo<Object> created
|
||||
|
||||
Foo<Integer> p13 = new Foo< >(1, "") {
|
||||
}; //new Foo<Integer> created
|
||||
Foo<? extends Integer> p14 = new Foo< >(1, "") {
|
||||
}; //new Foo<Integer> created
|
||||
Foo<?> p15 = new Foo< >(1, "") {
|
||||
}; //new Foo<Object> created
|
||||
Foo<? super Integer> p16 = new Foo< >(1, "") {
|
||||
}; //new Foo<Object> created
|
||||
Foo<Integer> p5 = new Foo<>(1, "");
|
||||
Foo<? extends Integer> p6 = new Foo<>(1, "");
|
||||
Foo<?> p7 = new Foo<>(1, "");
|
||||
Foo<? super Integer> p8 = new Foo<>(1, "");
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
|
||||
+35
@@ -0,0 +1,35 @@
|
||||
/*
|
||||
* Copyright 2000-2011 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
class Pos06 {
|
||||
static class Foo<X> {
|
||||
Foo(X x) { }
|
||||
}
|
||||
|
||||
static class DoubleFoo<X,Y> {
|
||||
DoubleFoo(X x,Y y) { }
|
||||
}
|
||||
|
||||
static class TripleFoo<X,Y,Z> {
|
||||
TripleFoo(X x,Y y,Z z) { }
|
||||
}
|
||||
|
||||
Foo<? extends Integer> fi = new Foo<>(1);
|
||||
Foo<?> fw = new Foo<>(fi);
|
||||
Foo<? extends Double> fd = new Foo<>(3.0);
|
||||
DoubleFoo<?,?> dw = new DoubleFoo<>(fi,fd);
|
||||
Foo<String> fs = new Foo<>("one");
|
||||
TripleFoo<?,?,?> tw = new TripleFoo<>(fi,fd,fs);
|
||||
}
|
||||
+27
@@ -0,0 +1,27 @@
|
||||
/*
|
||||
* Copyright 2000-2011 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
class Pos07 {
|
||||
static class Foo<X extends Number & Comparable<Number>> {}
|
||||
static class DoubleFoo<X extends Number & Comparable<Number>,
|
||||
Y extends Number & Comparable<Number>> {}
|
||||
static class TripleFoo<X extends Number & Comparable<Number>,
|
||||
Y extends Number & Comparable<Number>,
|
||||
Z> {}
|
||||
|
||||
Foo<?> fw = new Foo<>();
|
||||
DoubleFoo<?,?> dw = new DoubleFoo<>();
|
||||
TripleFoo<?,?,?> tw = new TripleFoo<>();
|
||||
}
|
||||
Reference in New Issue
Block a user