mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-08-25 14:25:04 +07:00
check type within its bound: wildcards
This commit is contained in:
+16
-16
@@ -7,32 +7,32 @@ class Neg01<X extends Number> {
|
||||
}
|
||||
|
||||
void test() {
|
||||
Neg01<<error>String</error>> n1 = new Neg01<<error></error>>("" ); //new Foo<Integer> created
|
||||
Neg01<? extends String> n2 = new Neg01<<error></error>>(""); //new Foo<Integer> created
|
||||
Neg01<?> n3 = new Neg01<><error>("")</error>; //new Foo<Object> created
|
||||
Neg01<? super String> n4 = new Neg01<<error></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>>("" ); //new Foo<Integer> created
|
||||
Neg01<<error descr="Type parameter 'java.lang.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="'Neg01(? extends java.lang.Number)' in 'Neg01' cannot be applied to '(java.lang.String)'">("")</error>; //new Foo<Object> created
|
||||
Neg01<<error descr="Type parameter 'java.lang.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>String</error>> n5 = new Neg01<<error></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<? extends String> n6 = new Neg01<<error></error>>("") {
|
||||
Neg01<<error descr="Type parameter 'java.lang.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>("")</error> {
|
||||
Neg01<?> n7 = new Neg01<><error descr="'Neg01(? extends java.lang.Number)' in 'Neg01' cannot be applied to '(java.lang.String)'">("")</error> {
|
||||
}; //new Foo<Object> created
|
||||
Neg01<? super String> n8 = new Neg01<<error></error>>("") {
|
||||
Neg01<<error descr="Type parameter 'java.lang.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>String</error>> n9 = new Neg01<<error></error>>("", ""); //new Foo<Integer> created
|
||||
Neg01<? extends String> n10 = new Neg01<<error></error>>("", ""); //new Foo<Integer> created
|
||||
Neg01<?> n11 = new Neg01<><error>("", "")</error>; //new Foo<Object> created
|
||||
<error>Foo</error><? super String> n12 = new Neg01<<error></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 'java.lang.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="'Neg01(? extends java.lang.Number, java.lang.String)' in 'Neg01' cannot be applied to '(java.lang.String, java.lang.String)'">("", "")</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>String</error>> n13 = new Neg01<<error></error>>("", "") {
|
||||
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<? extends String> n14 = new Neg01<<error></error>>("", "") {
|
||||
Neg01<<error descr="Type parameter 'java.lang.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>("", "")</error> {
|
||||
Neg01<?> n15 = new Neg01<><error descr="'Neg01(? extends java.lang.Number, java.lang.String)' in 'Neg01' cannot be applied to '(java.lang.String, java.lang.String)'">("", "")</error> {
|
||||
}; //new Foo<Object> created
|
||||
Neg01<? super String> n16 = new Neg01<<error></error>>("", "") {
|
||||
Neg01<<error descr="Type parameter 'java.lang.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
|
||||
}
|
||||
}
|
||||
|
||||
+32
-32
@@ -9,62 +9,62 @@ class Neg02 {
|
||||
}
|
||||
|
||||
void testSimple() {
|
||||
Foo<<error>String</error>> f1 = new Foo<<error></error>>(""); //new Foo<Integer> created
|
||||
Foo<? extends String> f2 = new Foo<<error></error>>(""); //new Foo<Integer> created
|
||||
Foo<?> f3 = new Foo<><error>("")</error>; //new Foo<Object> created
|
||||
Foo<? super String> f4 = new Foo<<error></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>>(""); //new Foo<Integer> created
|
||||
Foo<<error descr="Type parameter 'java.lang.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="'Foo(? extends java.lang.Number)' in 'Neg02.Foo' cannot be applied to '(java.lang.String)'">("")</error>; //new Foo<Object> created
|
||||
Foo<<error descr="Type parameter 'java.lang.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>String</error>> f5 = new Foo<<error></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<? extends String> f6 = new Foo<<error></error>>("") {
|
||||
Foo<<error descr="Type parameter 'java.lang.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>("")</error> {
|
||||
Foo<?> f7 = new Foo< ><error descr="'Foo(? extends java.lang.Number)' in 'Neg02.Foo' cannot be applied to '(java.lang.String)'">("")</error> {
|
||||
}; //new Foo<Object> created
|
||||
Foo<? super String> f8 = new Foo<<error></error>>("") {
|
||||
Foo<<error descr="Type parameter 'java.lang.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>String</error>> f9 = new Foo<<error></error>>("", ""); //new Foo<Integer> created
|
||||
Foo<? extends String> f10 = new Foo<<error></error>>("", ""); //new Foo<Integer> created
|
||||
Foo<?> f11 = new Foo< ><error>("", "")</error>; //new Foo<Object> created
|
||||
Foo<? super String> f12 = new Foo<<error></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 'java.lang.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="'Foo(? extends java.lang.Number, java.lang.String)' in 'Neg02.Foo' cannot be applied to '(java.lang.String, java.lang.String)'">("", "")</error>; //new Foo<Object> created
|
||||
Foo<<error descr="Type parameter 'java.lang.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>String</error>> f13 = new Foo<<error></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<? extends String> f14 = new Foo<<error></error>>("", "") {
|
||||
Foo<<error descr="Type parameter 'java.lang.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>("", "")</error> {
|
||||
Foo<?> f15 = new Foo< ><error descr="'Foo(? extends java.lang.Number, java.lang.String)' in 'Neg02.Foo' cannot be applied to '(java.lang.String, java.lang.String)'">("", "")</error> {
|
||||
}; //new Foo<Object> created
|
||||
Foo<? super String> f16 = new Foo<<error></error>>("", "") {
|
||||
Foo<<error descr="Type parameter 'java.lang.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
|
||||
}
|
||||
|
||||
void testQualified() {
|
||||
Foo<<error>String</error>> f1 = new Neg02.Foo<<error></error>>(""); //new Foo<Integer> created
|
||||
Foo<? extends String> f2 = new Neg02.Foo<<error></error>>(""); //new Foo<Integer> created
|
||||
Foo<?> f3 = new Neg02.Foo< ><error>("")</error>; //new Foo<Object> created
|
||||
Foo<? super String> f4 = new Neg02.Foo<<error></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>>(""); //new Foo<Integer> created
|
||||
Foo<<error descr="Type parameter 'java.lang.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="'Foo(? extends java.lang.Number)' in 'Neg02.Foo' cannot be applied to '(java.lang.String)'">("")</error>; //new Foo<Object> created
|
||||
Foo<<error descr="Type parameter 'java.lang.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>String</error>> f5 = new Neg02.Foo<<error></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<? extends String> f6 = new Neg02.Foo<<error></error>>("") {
|
||||
Foo<<error descr="Type parameter 'java.lang.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>("")</error> {
|
||||
Foo<?> f7 = new Neg02.Foo< ><error descr="'Foo(? extends java.lang.Number)' in 'Neg02.Foo' cannot be applied to '(java.lang.String)'">("")</error> {
|
||||
}; //new Foo<Object> created
|
||||
Foo<? super String> f8 = new Neg02.Foo<<error></error>>("") {
|
||||
Foo<<error descr="Type parameter 'java.lang.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>String</error>> f9 = new Neg02.Foo<<error></error>>("", ""); //new Foo<Integer> created
|
||||
Foo<? extends String> f10 = new Neg02.Foo<<error></error>>("", ""); //new Foo<Integer> created
|
||||
Foo<?> f11 = new Neg02.Foo< ><error>("", "")</error>; //new Foo<Object> created
|
||||
Foo<? super String> f12 = new Neg02.Foo<<error></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 'java.lang.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="'Foo(? extends java.lang.Number, java.lang.String)' in 'Neg02.Foo' cannot be applied to '(java.lang.String, java.lang.String)'">("", "")</error>; //new Foo<Object> created
|
||||
Foo<<error descr="Type parameter 'java.lang.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>String</error>> f13 = new Neg02.Foo<<error></error>>("", "") {
|
||||
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<? extends String> f14 = new Neg02.Foo<<error></error>>("", "") {
|
||||
Foo<<error descr="Type parameter 'java.lang.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>("", "")</error> {
|
||||
Foo<?> f15 = new Neg02.Foo< ><error descr="'Foo(? extends java.lang.Number, java.lang.String)' in 'Neg02.Foo' cannot be applied to '(java.lang.String, java.lang.String)'">("", "")</error> {
|
||||
}; //new Foo<Object> created
|
||||
Foo<? super String> f16 = new Neg02.Foo<<error></error>>("", "") {
|
||||
Foo<<error descr="Type parameter 'java.lang.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
|
||||
}
|
||||
}
|
||||
|
||||
+48
-48
@@ -6,68 +6,68 @@ class Neg03<U> {
|
||||
}
|
||||
|
||||
void testSimple() {
|
||||
Foo<<error>String</error>> f1 = new Foo<<error></error>>(""); //new Foo<Integer> created
|
||||
Foo<? extends String> f2 = new Foo<<error></error>>(""); //new Foo<Integer> created
|
||||
Foo<?> f3 = new Foo<><error>("")</error>; //new Foo<Object> created
|
||||
Foo<? super String> f4 = new Foo<<error></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>>(""); //new Foo<Integer> created
|
||||
Foo<<error descr="Type parameter 'java.lang.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="'Foo(? extends java.lang.Number)' in 'Neg03.Foo' cannot be applied to '(java.lang.String)'">("")</error>; //new Foo<Object> created
|
||||
Foo<<error descr="Type parameter 'java.lang.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>String</error>> f5 = new Foo<<error></error>>(""){}; //new Foo<Integer> created
|
||||
Foo<? extends String> f6 = new Foo<<error></error>>(""){}; //new Foo<Integer> created
|
||||
Foo<?> f7 = new Foo<><error>("")</error>{}; //new Foo<Object> created
|
||||
Foo<? super String> f8 = new Foo<<error></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>>(""){}; //new Foo<Integer> created
|
||||
Foo<<error descr="Type parameter 'java.lang.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="'Foo(? extends java.lang.Number)' in 'Neg03.Foo' cannot be applied to '(java.lang.String)'">("")</error>{}; //new Foo<Object> created
|
||||
Foo<<error descr="Type parameter 'java.lang.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>String</error>> f9 = new Foo<<error></error>>("", ""); //new Foo<Integer> created
|
||||
Foo<? extends String> f10 = new Foo<<error></error>>("", ""); //new Foo<Integer> created
|
||||
Foo<?> f11 = new Foo<><error>("", "")</error>; //new Foo<Object> created
|
||||
Foo<? super String> f12 = new Foo<<error></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 'java.lang.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="'Foo(? extends java.lang.Number, java.lang.String)' in 'Neg03.Foo' cannot be applied to '(java.lang.String, java.lang.String)'">("", "")</error>; //new Foo<Object> created
|
||||
Foo<<error descr="Type parameter 'java.lang.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>String</error>> f13 = new Foo<<error></error>>("", ""){}; //new Foo<Integer> created
|
||||
Foo<? extends String> f14 = new Foo<<error></error>>("", ""){}; //new Foo<Integer> created
|
||||
Foo<?> f15 = new Foo<><error>("", "")</error>{}; //new Foo<Object> created
|
||||
Foo<? super String> f16 = new Foo<<error></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 'java.lang.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="'Foo(? extends java.lang.Number, java.lang.String)' in 'Neg03.Foo' cannot be applied to '(java.lang.String, java.lang.String)'">("", "")</error>{}; //new Foo<Object> created
|
||||
Foo<<error descr="Type parameter 'java.lang.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
|
||||
}
|
||||
|
||||
void testQualified_1() {
|
||||
Foo<<error>String</error>> f1 = new Neg03<U>.Foo<<error></error>>(""); //new Foo<Integer> created
|
||||
Foo<? extends String> f2 = new Neg03<U>.Foo<<error></error>>(""); //new Foo<Integer> created
|
||||
Foo<?> f3 = new Neg03<U>.Foo<><error>("")</error>; //new Foo<Object> created
|
||||
Foo<? super String> f4 = new Neg03<U>.Foo<<error></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 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 'java.lang.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="'Foo(? extends java.lang.Number)' in 'Neg03.Foo' cannot be applied to '(java.lang.String)'">("")</error>; //new Foo<Object> created
|
||||
Foo<<error descr="Type parameter 'java.lang.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
|
||||
|
||||
Foo<<error>String</error>> f5 = new Neg03<U>.Foo<<error></error>>(""){}; //new Foo<Integer> created
|
||||
Foo<? extends String> f6 = new Neg03<U>.Foo<<error></error>>(""){}; //new Foo<Integer> created
|
||||
Foo<?> f7 = new Neg03<U>.Foo<><error>("")</error>{}; //new Foo<Object> created
|
||||
Foo<? super String> f8 = new Neg03<U>.Foo<<error></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>>(""){}; //new Foo<Integer> created
|
||||
Foo<<error descr="Type parameter 'java.lang.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="'Foo(? extends java.lang.Number)' in 'Neg03.Foo' cannot be applied to '(java.lang.String)'">("")</error>{}; //new Foo<Object> created
|
||||
Foo<<error descr="Type parameter 'java.lang.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>String</error>> f9 = new Neg03<U>.Foo<<error></error>>("", ""); //new Foo<Integer> created
|
||||
Foo<? extends String> f10 = new Neg03<U>.Foo<<error></error>>("", ""); //new Foo<Integer> created
|
||||
Foo<?> f11 = new Neg03<U>.Foo<><error>("", "")</error>; //new Foo<Object> created
|
||||
Foo<? super String> f12 = new Neg03<U>.Foo<<error></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 'java.lang.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="'Foo(? extends java.lang.Number, java.lang.String)' in 'Neg03.Foo' cannot be applied to '(java.lang.String, java.lang.String)'">("", "")</error>; //new Foo<Object> created
|
||||
Foo<<error descr="Type parameter 'java.lang.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>String</error>> f13 = new Neg03<U>.Foo<<error></error>>("", ""){}; //new Foo<Integer> created
|
||||
Foo<? extends String> f14 = new Neg03<U>.Foo<<error></error>>("", ""){}; //new Foo<Integer> created
|
||||
Foo<?> f15 = new Neg03<U>.Foo<><error>("", "")</error>{}; //new Foo<Object> created
|
||||
Foo<? super String> f16 = new Neg03<U>.Foo<<error></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 'java.lang.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="'Foo(? extends java.lang.Number, java.lang.String)' in 'Neg03.Foo' cannot be applied to '(java.lang.String, java.lang.String)'">("", "")</error>{}; //new Foo<Object> created
|
||||
Foo<<error descr="Type parameter 'java.lang.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>String</error>> f1 = n.new Foo<<error></error>>(""); //new Foo<Integer> created
|
||||
Foo<? extends String> f2 = n.new Foo<<error></error>>(""); //new Foo<Integer> created
|
||||
Foo<?> f3 = n.new Foo<><error>("")</error>; //new Foo<Integer> created
|
||||
Foo<? super String> f4 = n.new Foo<<error></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>> 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 'java.lang.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="'Foo(? extends java.lang.Number)' in 'Neg03.Foo' cannot be applied to '(java.lang.String)'">("")</error>; //new Foo<Integer> created
|
||||
Foo<<error descr="Type parameter 'java.lang.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>String</error>> f5 = n.new Foo<<error></error>>(""){}; //new Foo<Integer> created
|
||||
Foo<? extends String> f6 = n.new Foo<<error></error>>(""){}; //new Foo<Integer> created
|
||||
Foo<?> f7 = n.new Foo<><error>("")</error>{}; //new Foo<Integer> created
|
||||
Foo<? super String> f8 = n.new Foo<<error></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 'java.lang.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="'Foo(? extends java.lang.Number)' in 'Neg03.Foo' cannot be applied to '(java.lang.String)'">("")</error>{}; //new Foo<Integer> created
|
||||
Foo<<error descr="Type parameter 'java.lang.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>String</error>> f9 = n.new Foo<<error></error>>("", ""); //new Foo<Integer> created
|
||||
Foo<? extends String> f10 = n.new Foo<<error></error>>("", ""); //new Foo<Integer> created
|
||||
Foo<?> f11 = n.new Foo<><error>("", "")</error>; //new Foo<Integer> created
|
||||
Foo<? super String> f12 = n.new Foo<<error></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 'java.lang.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="'Foo(? extends java.lang.Number, java.lang.String)' in 'Neg03.Foo' cannot be applied to '(java.lang.String, java.lang.String)'">("", "")</error>; //new Foo<Integer> created
|
||||
Foo<<error descr="Type parameter 'java.lang.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>String</error>> f13 = n.new Foo<<error></error>>("", ""){}; //new Foo<Integer> created
|
||||
Foo<? extends String> f14 = n.new Foo<<error></error>>("", ""){}; //new Foo<Integer> created
|
||||
Foo<?> f15 = n.new Foo<><error>("", "")</error>{}; //new Foo<Integer> created
|
||||
Foo<? super String> f16 = n.new Foo<<error></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 'java.lang.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="'Foo(? extends java.lang.Number, java.lang.String)' in 'Neg03.Foo' cannot be applied to '(java.lang.String, java.lang.String)'">("", "")</error>{}; //new Foo<Integer> created
|
||||
Foo<<error descr="Type parameter 'java.lang.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
|
||||
}
|
||||
}
|
||||
|
||||
+26
-26
@@ -1,28 +1,28 @@
|
||||
class Neg04 {
|
||||
class Neg04 {
|
||||
|
||||
void test() {
|
||||
class Foo<V extends Number> {
|
||||
Foo(V x) {}
|
||||
<Z> Foo(V x, Z z) {}
|
||||
}
|
||||
Foo<<error>String</error>> n1 = new Foo<<error></error>>(""); //new Foo<Integer> created
|
||||
Foo<? extends String> n2 = new Foo<<error></error>>(""); //new Foo<Integer> created
|
||||
Foo<?> n3 = new Foo<><error>("")</error>; //new Foo<Object> created
|
||||
Foo<? super String> n4 = new Foo<<error></error>>(""); //new Foo<Object> created
|
||||
|
||||
Foo<<error>String</error>> n5 = new Foo<<error></error>>(""){}; //new Foo<Integer> created
|
||||
Foo<? extends String> n6 = new Foo<<error></error>>(""){}; //new Foo<Integer> created
|
||||
Foo<?> n7 = new Foo<><error>("")</error>{}; //new Foo<Object> created
|
||||
Foo<? super String> n8 = new Foo<<error></error>>(""){}; //new Foo<Object> created
|
||||
|
||||
Foo<<error>String</error>> n9 = new Foo<<error></error>>("", ""); //new Foo<Integer> created
|
||||
Foo<? extends String> n10 = new Foo<<error></error>>("", ""); //new Foo<Integer> created
|
||||
Foo<?> n11 = new Foo<><error>("", "")</error>; //new Foo<Object> created
|
||||
Foo<? super String> n12 = new Foo<<error></error>>("", ""); //new Foo<Object> created
|
||||
|
||||
Foo<<error>String</error>> n13 = new Foo<<error></error>>("", ""){}; //new Foo<Integer> created
|
||||
Foo<? extends String> n14 = new Foo<<error></error>>("", ""){}; //new Foo<Integer> created
|
||||
Foo<?> n15 = new Foo<><error>("", "")</error>{}; //new Foo<Object> created
|
||||
Foo<? super String> n16 = new Foo<<error></error>>("", ""){}; //new Foo<Object> created
|
||||
}
|
||||
void test() {
|
||||
class Foo<V extends Number> {
|
||||
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 'java.lang.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="'Foo(? extends java.lang.Number)' in 'Foo' cannot be applied to '(java.lang.String)'">("")</error>; //new Foo<Object> created
|
||||
Foo<<error descr="Type parameter 'java.lang.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>> 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 'java.lang.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="'Foo(? extends java.lang.Number)' in 'Foo' cannot be applied to '(java.lang.String)'">("")</error>{}; //new Foo<Object> created
|
||||
Foo<<error descr="Type parameter 'java.lang.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 'java.lang.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="'Foo(? extends java.lang.Number, java.lang.String)' in 'Foo' cannot be applied to '(java.lang.String, java.lang.String)'">("", "")</error>; //new Foo<Object> created
|
||||
Foo<<error descr="Type parameter 'java.lang.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 'java.lang.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="'Foo(? extends java.lang.Number, java.lang.String)' in 'Foo' cannot be applied to '(java.lang.String, java.lang.String)'">("", "")</error>{}; //new Foo<Object> created
|
||||
Foo<<error descr="Type parameter 'java.lang.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
|
||||
}
|
||||
}
|
||||
|
||||
+146
@@ -0,0 +1,146 @@
|
||||
public class WithingBounds {
|
||||
interface I {
|
||||
}
|
||||
|
||||
void testE1() {
|
||||
class A {
|
||||
}
|
||||
class B extends A {
|
||||
}
|
||||
class ToCheckExtends<TTT extends A> {
|
||||
}
|
||||
|
||||
ToCheckExtends<? extends B> pr;
|
||||
}
|
||||
|
||||
void testERec1() {
|
||||
class A {
|
||||
}
|
||||
class B<K> extends A {
|
||||
}
|
||||
class C<Y>{}
|
||||
class ToCheckExtends<TTT extends A> {
|
||||
}
|
||||
|
||||
ToCheckExtends<<error descr="Type parameter 'C' is not within its bound; should extend 'A'">? extends C<? extends C></error>> pr;
|
||||
ToCheckExtends<? extends B<? extends C>> pr1;
|
||||
}
|
||||
|
||||
|
||||
void testE2() {
|
||||
class A {
|
||||
}
|
||||
class B {
|
||||
}
|
||||
class ToCheckExtends<TTT extends A> {
|
||||
}
|
||||
|
||||
ToCheckExtends<<error descr="Type parameter 'B' is not within its bound; should extend 'A'">? extends B</error>> pr;
|
||||
}
|
||||
|
||||
void testE22() {
|
||||
class B {
|
||||
}
|
||||
class A extends B {
|
||||
}
|
||||
class ToCheckExtends<TTT extends A> {
|
||||
}
|
||||
|
||||
ToCheckExtends<? extends B> pr;
|
||||
}
|
||||
|
||||
|
||||
void testE23() {
|
||||
class A {
|
||||
}
|
||||
class ToCheckExtends<TTT extends A> {
|
||||
}
|
||||
|
||||
ToCheckExtends<? extends I> pr;
|
||||
}
|
||||
|
||||
void testE24() {
|
||||
final class A {
|
||||
}
|
||||
class ToCheckExtends<TTT extends A> {
|
||||
}
|
||||
|
||||
ToCheckExtends<<error descr="Type parameter 'WithingBounds.I' is not within its bound; should implement 'A'">? extends I</error>> pr;
|
||||
}
|
||||
|
||||
|
||||
//---------------------------------
|
||||
|
||||
void testE3() {
|
||||
class A {
|
||||
}
|
||||
class ToCheckExtends<TTT extends I> {
|
||||
}
|
||||
|
||||
ToCheckExtends<? extends A> pr;
|
||||
}
|
||||
|
||||
void testE4() {
|
||||
final class A {
|
||||
}
|
||||
class ToCheckExtends<TTT extends I> {
|
||||
}
|
||||
|
||||
ToCheckExtends<<error descr="Type parameter 'A' is not within its bound; should implement 'WithingBounds.I'">? extends A</error>> pr;
|
||||
}
|
||||
|
||||
void testE5() {
|
||||
final class A implements I {
|
||||
}
|
||||
class ToCheckExtends<TTT extends I> {
|
||||
}
|
||||
|
||||
ToCheckExtends<? extends A> pr;
|
||||
}
|
||||
|
||||
|
||||
interface AInterface {
|
||||
}
|
||||
void testE6() {
|
||||
|
||||
class ToCheckExtends<TTT extends I> {
|
||||
}
|
||||
|
||||
ToCheckExtends<? extends AInterface> pr;
|
||||
}
|
||||
|
||||
//-----------------------------
|
||||
|
||||
void testS1() {
|
||||
class A {
|
||||
}
|
||||
class B extends A {
|
||||
}
|
||||
class ToCheckExtends<TTT extends A> {
|
||||
}
|
||||
|
||||
ToCheckExtends<? super B> pr;
|
||||
}
|
||||
|
||||
void testS2() {
|
||||
class A {
|
||||
}
|
||||
class B {
|
||||
}
|
||||
class ToCheckExtends<TTT extends A> {
|
||||
}
|
||||
|
||||
ToCheckExtends<<error descr="Type parameter 'B' is not within its bound; should extend 'A'">? super B</error>> pr;
|
||||
}
|
||||
|
||||
void testS3() {
|
||||
class A {
|
||||
}
|
||||
class B extends A {
|
||||
}
|
||||
class ToCheckExtends<TTT extends B> {
|
||||
}
|
||||
|
||||
ToCheckExtends<<error descr="Type parameter 'A' is not within its bound; should extend 'B'">? super A</error>> pr;
|
||||
}
|
||||
}
|
||||
+18
-18
@@ -8,7 +8,7 @@ public class Test {
|
||||
class B {}
|
||||
|
||||
W<? extends A> xx = null;
|
||||
W<? extends B> y = <error>(W<? extends B>) xx</error>;
|
||||
W<? extends B> y = <error descr="Inconvertible types; cannot cast 'W<capture<? extends A>>' to 'W<? extends B>'">(W<? extends B>) xx</error>;
|
||||
}
|
||||
|
||||
void testEE2() {
|
||||
@@ -55,7 +55,7 @@ public class Test {
|
||||
void test411EE() {
|
||||
final class A {}
|
||||
W<? extends B> xx = null;
|
||||
W<? extends A> y = <error>(W<? extends A>) xx</error>;
|
||||
W<? extends A> y = <error descr="Inconvertible types; cannot cast 'W<capture<? extends Test.B>>' to 'W<? extends A>'">(W<? extends A>) xx</error>;
|
||||
}
|
||||
|
||||
void test412EE() {
|
||||
@@ -92,7 +92,7 @@ public class Test {
|
||||
class B {}
|
||||
|
||||
W<? extends A> x = null;
|
||||
W<? super B> y = <error>(W<? super B>) x</error>;
|
||||
W<? super B> y = <error descr="Inconvertible types; cannot cast 'W<capture<? extends A>>' to 'W<? super B>'">(W<? super B>) x</error>;
|
||||
}
|
||||
|
||||
void test2ES() {
|
||||
@@ -108,13 +108,13 @@ public class Test {
|
||||
class B extends A {}
|
||||
|
||||
W<? extends B> x = null;
|
||||
W<? super A> y = <error>(W<? super A>) x</error>;
|
||||
W<? super A> y = <error descr="Inconvertible types; cannot cast 'W<capture<? extends B>>' to 'W<? super A>'">(W<? super A>) x</error>;
|
||||
}
|
||||
|
||||
|
||||
void test4ES() {
|
||||
W<? extends B> x = null;
|
||||
W<? super A> y = <error>(W<? super A>) x</error>;
|
||||
W<? super A> y = <error descr="Inconvertible types; cannot cast 'W<capture<? extends Test.B>>' to 'W<? super Test.A>'">(W<? super A>) x</error>;
|
||||
}
|
||||
|
||||
void test5ES() {
|
||||
@@ -128,7 +128,7 @@ public class Test {
|
||||
final class B implements A {}
|
||||
|
||||
W<? extends B> x = null;
|
||||
W<? super A> y = <error>(W<? super A>) x</error>;
|
||||
W<? super A> y = <error descr="Inconvertible types; cannot cast 'W<capture<? extends B>>' to 'W<? super Test.A>'">(W<? super A>) x</error>;
|
||||
}
|
||||
|
||||
// ? extends A, B -----------------------
|
||||
@@ -139,7 +139,7 @@ public class Test {
|
||||
}
|
||||
|
||||
W<? extends A> xx = null;
|
||||
W<B> y = <error>(W<B>) xx</error>;
|
||||
W<B> y = <error descr="Inconvertible types; cannot cast 'W<capture<? extends A>>' to 'W<B>'">(W<B>) xx</error>;
|
||||
}
|
||||
|
||||
void test2EWC() {
|
||||
@@ -168,7 +168,7 @@ public class Test {
|
||||
}
|
||||
|
||||
W<? super A> xx = null;
|
||||
W<B> y = <error>(W<B>) xx</error>;
|
||||
W<B> y = <error descr="Inconvertible types; cannot cast 'W<capture<? super A>>' to 'W<B>'">(W<B>) xx</error>;
|
||||
}
|
||||
|
||||
void test2SWC() {
|
||||
@@ -204,7 +204,7 @@ public class Test {
|
||||
}
|
||||
|
||||
W<? extends P<? extends A>> xx = null;
|
||||
W<? extends B> y = <error>(W<? extends B>) xx</error>;
|
||||
W<? extends B> y = <error descr="Inconvertible types; cannot cast 'W<capture<? extends P<? extends A>>>' to 'W<? extends B>'">(W<? extends B>) xx</error>;
|
||||
}
|
||||
|
||||
void test2EEWC() {
|
||||
@@ -255,7 +255,7 @@ public class Test {
|
||||
class B {}
|
||||
|
||||
W<? extends A[]> xx = null;
|
||||
W<? extends B[]> y = <error>(W<? extends B[]>) xx</error>;
|
||||
W<? extends B[]> y = <error descr="Inconvertible types; cannot cast 'W<capture<? extends A[]>>' to 'W<? extends B[]>'">(W<? extends B[]>) xx</error>;
|
||||
}
|
||||
|
||||
void test11AE() {
|
||||
@@ -263,7 +263,7 @@ public class Test {
|
||||
class B {}
|
||||
|
||||
W<? extends A[]> xx = null;
|
||||
W<? extends B> y = <error>(W<? extends B>) xx</error>;
|
||||
W<? extends B> y = <error descr="Inconvertible types; cannot cast 'W<capture<? extends A[]>>' to 'W<? extends B>'">(W<? extends B>) xx</error>;
|
||||
}
|
||||
|
||||
void test2AE() {
|
||||
@@ -279,7 +279,7 @@ public class Test {
|
||||
class B extends A {}
|
||||
|
||||
W<? extends A[]> xx = null;
|
||||
W<? extends B> y = <error>(W<? extends B>) xx</error>;
|
||||
W<? extends B> y = <error descr="Inconvertible types; cannot cast 'W<capture<? extends A[]>>' to 'W<? extends B>'">(W<? extends B>) xx</error>;
|
||||
}
|
||||
|
||||
|
||||
@@ -293,7 +293,7 @@ public class Test {
|
||||
void testInt1AE() {
|
||||
|
||||
W<? extends A[]> xx = null;
|
||||
W<? extends B[][]> y = <error>(W<? extends B[][]>) xx</error>;
|
||||
W<? extends B[][]> y = <error descr="Inconvertible types; cannot cast 'W<capture<? extends Test.A[]>>' to 'W<? extends Test.B[][]>'">(W<? extends B[][]>) xx</error>;
|
||||
}
|
||||
|
||||
void testASS() {
|
||||
@@ -309,7 +309,7 @@ public class Test {
|
||||
class B {}
|
||||
|
||||
W<? extends A[]> x = null;
|
||||
W<? super B[]> y = <error>(W<? super B[]>) x</error>;
|
||||
W<? super B[]> y = <error descr="Inconvertible types; cannot cast 'W<capture<? extends A[]>>' to 'W<? super B[]>'">(W<? super B[]>) x</error>;
|
||||
}
|
||||
|
||||
void test2AES() {
|
||||
@@ -325,14 +325,14 @@ public class Test {
|
||||
class B extends A {}
|
||||
|
||||
W<? extends B[]> x = null;
|
||||
W<? super A[]> y = <error>(W<? super A[]>) x</error>;
|
||||
W<? super A[]> y = <error descr="Inconvertible types; cannot cast 'W<capture<? extends B[]>>' to 'W<? super A[]>'">(W<? super A[]>) x</error>;
|
||||
}
|
||||
|
||||
|
||||
|
||||
void test4AES() {
|
||||
W<? extends B[]> x = null;
|
||||
W<? super A[]> y = <error>(W<? super A[]>) x</error>;
|
||||
W<? super A[]> y = <error descr="Inconvertible types; cannot cast 'W<capture<? extends Test.B[]>>' to 'W<? super Test.A[]>'">(W<? super A[]>) x</error>;
|
||||
}
|
||||
|
||||
void test5AES() {
|
||||
@@ -346,7 +346,7 @@ public class Test {
|
||||
final class B implements A {}
|
||||
|
||||
W<? extends B[]> x = null;
|
||||
W<? super A[]> y = <error>(W<? super A[]>) x</error>;
|
||||
W<? super A[]> y = <error descr="Inconvertible types; cannot cast 'W<capture<? extends B[]>>' to 'W<? super Test.A[]>'">(W<? super A[]>) x</error>;
|
||||
}
|
||||
|
||||
// type parameters extensions: D<T extends A>
|
||||
@@ -375,7 +375,7 @@ public class Test {
|
||||
|
||||
void foo() {
|
||||
D<? extends T> x = null;
|
||||
D<? extends B> y = <error>(D<? extends B>) x</error>;
|
||||
D<<error descr="Type parameter 'B' is not within its bound; should extend 'A'">? extends B</error>> y = (D<<error descr="Type parameter 'B' is not within its bound; should extend 'A'">? extends B</error>>) x;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user