mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-10 13:17:09 +07:00
do not open captured wildcards on substitution; don't capture wildcards on getExtendsTypes for type parameters and their consequences
This commit is contained in:
+1
-1
@@ -1,7 +1,7 @@
|
||||
class Sample {
|
||||
private <T> void collectClassInformation(java.util.Set<Class<? extends T>> classes) throws Exception {
|
||||
for (Class<? extends T> root : classes) {
|
||||
collectClassInformation<error descr="'collectClassInformation(java.util.Set<java.lang.Class<? extends T>>)' in 'Sample' cannot be applied to '(java.util.Set<java.lang.Class<capture<? extends T>>>)'">(getSubTypesOf(root))</error>;
|
||||
collectClassInformation<error descr="'collectClassInformation(java.util.Set<java.lang.Class<? extends T>>)' in 'Sample' cannot be applied to '(java.util.Set<java.lang.Class<? extends capture<? extends T>>>)'">(getSubTypesOf(root))</error>;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -17,7 +17,7 @@ class FooBar<T> {
|
||||
}
|
||||
|
||||
void foo1(final FooBar<? super T> fooBar){
|
||||
fooBar.supertype<error descr="'supertype(java.lang.Class<capture<? super T>>)' in 'FooBar' cannot be applied to '(java.lang.Class<java.lang.Iterable>)'">(Iterable.class)</error>;
|
||||
fooBar.supertype<error descr="'supertype(java.lang.Class<? super capture<? super T>>)' in 'FooBar' cannot be applied to '(java.lang.Class<java.lang.Iterable>)'">(Iterable.class)</error>;
|
||||
}
|
||||
|
||||
void foo2(final FooBar<? extends T> fooBar){
|
||||
|
||||
+4
-4
@@ -3,7 +3,7 @@ abstract class A<T> {
|
||||
<K> void baz5(B<K, K> a) {}
|
||||
abstract B<T, ? super T> foo5();
|
||||
void bar5(A<? super T> a) {
|
||||
baz5<error descr="'baz5(B<capture<? super T>,capture<? super T>>)' in 'A' cannot be applied to '(B<capture<? super T>,capture<? super T>>)'">(a.foo5())</error>;
|
||||
baz5<error descr="'baz5(B<capture<? super capture<? super T>>,capture<? super capture<? super T>>>)' in 'A' cannot be applied to '(B<capture<? super T>,capture<? super capture<? super T>>>)'">(a.foo5())</error>;
|
||||
}
|
||||
|
||||
<K> void baz7(B<K, K> a) {}
|
||||
@@ -15,20 +15,20 @@ abstract class A<T> {
|
||||
<K> void baz9(B<K, K> a) {}
|
||||
abstract B<T, ? extends T> foo9();
|
||||
void bar9(A<? extends T> a) {
|
||||
baz9<error descr="'baz9(B<capture<? extends T>,capture<? extends T>>)' in 'A' cannot be applied to '(B<capture<? extends T>,capture<? extends T>>)'">(a.foo9())</error>;
|
||||
baz9<error descr="'baz9(B<capture<? extends capture<? extends T>>,capture<? extends capture<? extends T>>>)' in 'A' cannot be applied to '(B<capture<? extends T>,capture<? extends capture<? extends T>>>)'">(a.foo9())</error>;
|
||||
}
|
||||
|
||||
|
||||
<K> void baz14(B<K, K> a) {}
|
||||
abstract B<? super T, ? super T> foo14();
|
||||
void bar14(A<? super T> a) {
|
||||
baz14<error descr="'baz14(B<capture<? super T>,capture<? super T>>)' in 'A' cannot be applied to '(B<capture<? super T>,capture<? super T>>)'">(a.foo14())</error>;
|
||||
baz14<error descr="'baz14(B<capture<? super capture<? super T>>,capture<? super capture<? super T>>>)' in 'A' cannot be applied to '(B<capture<? super capture<? super T>>,capture<? super capture<? super T>>>)'">(a.foo14())</error>;
|
||||
}
|
||||
|
||||
|
||||
<K> void baz24(B<K, K> a) {}
|
||||
abstract B<? extends T, ? extends T> foo24();
|
||||
void bar24(A<? extends T> a) {
|
||||
baz24<error descr="'baz24(B<capture<? extends T>,capture<? extends T>>)' in 'A' cannot be applied to '(B<capture<? extends T>,capture<? extends T>>)'">(a.foo24())</error>;
|
||||
baz24<error descr="'baz24(B<capture<? extends capture<? extends T>>,capture<? extends capture<? extends T>>>)' in 'A' cannot be applied to '(B<capture<? extends capture<? extends T>>,capture<? extends capture<? extends T>>>)'">(a.foo24())</error>;
|
||||
}
|
||||
}
|
||||
+5
-6
@@ -1,4 +1,3 @@
|
||||
|
||||
interface NodeTraverser<T> {
|
||||
NodeTraverser<T> filter(Predicate<? super T> filter);
|
||||
|
||||
@@ -26,9 +25,9 @@ class Test {
|
||||
|
||||
traverser1.filter<error descr="'filter(Predicate<? super capture<? extends java.lang.String>>)' in 'NodeTraverser' cannot be applied to '(Predicate<capture<?>>)'">(filter)</error>;
|
||||
traverser1.filter1<error descr="'filter1(Predicate<capture<? extends java.lang.String>>)' in 'NodeTraverser' cannot be applied to '(Predicate<capture<?>>)'">(filter)</error>;
|
||||
traverser1.filter2<error descr="'filter2(Predicate<capture<? extends java.lang.String>>)' in 'NodeTraverser' cannot be applied to '(Predicate<capture<?>>)'">(filter)</error>; // "'filter2(Predicate<? extends capture<? extends java.lang.String>>)' in 'NodeTraverser' cannot be applied to '(Predicate<capture<?>>)'"
|
||||
traverser1.filter2<error descr="'filter2(Predicate<? extends capture<? extends java.lang.String>>)' in 'NodeTraverser' cannot be applied to '(Predicate<capture<?>>)'">(filter)</error>; // "'filter2(Predicate<? extends capture<? extends java.lang.String>>)' in 'NodeTraverser' cannot be applied to '(Predicate<capture<?>>)'"
|
||||
|
||||
traverser2.filter<error descr="'filter(Predicate<capture<? super java.lang.String>>)' in 'NodeTraverser' cannot be applied to '(Predicate<capture<?>>)'">(filter)</error>; // "'filter(Predicate<? super capture<? super java.lang.String>>)' in 'NodeTraverser' cannot be applied to '(Predicate<capture<?>>)'"
|
||||
traverser2.filter<error descr="'filter(Predicate<? super capture<? super java.lang.String>>)' in 'NodeTraverser' cannot be applied to '(Predicate<capture<?>>)'">(filter)</error>; // "'filter(Predicate<? super capture<? super java.lang.String>>)' in 'NodeTraverser' cannot be applied to '(Predicate<capture<?>>)'"
|
||||
traverser2.filter1<error descr="'filter1(Predicate<capture<? super java.lang.String>>)' in 'NodeTraverser' cannot be applied to '(Predicate<capture<?>>)'">(filter)</error>;
|
||||
traverser2.filter2<error descr="'filter2(Predicate<? extends capture<? super java.lang.String>>)' in 'NodeTraverser' cannot be applied to '(Predicate<capture<?>>)'">(filter)</error>;
|
||||
|
||||
@@ -42,7 +41,7 @@ class Test {
|
||||
traverser1.filter1<error descr="'filter1(Predicate<capture<? extends java.lang.String>>)' in 'NodeTraverser' cannot be applied to '(Predicate<capture<? extends java.lang.String>>)'">(filter1)</error>;
|
||||
traverser1.<error descr="Cannot resolve symbol 'filter2'">filter2</error>>(filter1);// "'filter2(Predicate<? extends capture<? extends java.lang.String>>)' in 'NodeTraverser' cannot be applied to '(Predicate<capture<? extends java.lang.String>>)'"
|
||||
|
||||
traverser2.filter<error descr="'filter(Predicate<capture<? super java.lang.String>>)' in 'NodeTraverser' cannot be applied to '(Predicate<capture<? extends java.lang.String>>)'">(filter1)</error>;// "'filter(Predicate<? super capture<? super java.lang.String>>)' in 'NodeTraverser' cannot be applied to '(Predicate<capture<? extends java.lang.String>>)'"
|
||||
traverser2.filter<error descr="'filter(Predicate<? super capture<? super java.lang.String>>)' in 'NodeTraverser' cannot be applied to '(Predicate<capture<? extends java.lang.String>>)'">(filter1)</error>;// "'filter(Predicate<? super capture<? super java.lang.String>>)' in 'NodeTraverser' cannot be applied to '(Predicate<capture<? extends java.lang.String>>)'"
|
||||
traverser2.filter1<error descr="'filter1(Predicate<capture<? super java.lang.String>>)' in 'NodeTraverser' cannot be applied to '(Predicate<capture<? extends java.lang.String>>)'">(filter1)</error>;
|
||||
traverser2.filter2(filter1);
|
||||
|
||||
@@ -54,9 +53,9 @@ class Test {
|
||||
|
||||
traverser1.filter(filter2);
|
||||
traverser1.filter1<error descr="'filter1(Predicate<capture<? extends java.lang.String>>)' in 'NodeTraverser' cannot be applied to '(Predicate<capture<? super java.lang.String>>)'">(filter2)</error>;
|
||||
traverser1.filter2<error descr="'filter2(Predicate<capture<? extends java.lang.String>>)' in 'NodeTraverser' cannot be applied to '(Predicate<capture<? super java.lang.String>>)'">(filter2)</error>;// "'filter2(Predicate<? extends capture<? extends java.lang.String>>)' in 'NodeTraverser' cannot be applied to '(Predicate<capture<? super java.lang.String>>)'"
|
||||
traverser1.filter2<error descr="'filter2(Predicate<? extends capture<? extends java.lang.String>>)' in 'NodeTraverser' cannot be applied to '(Predicate<capture<? super java.lang.String>>)'">(filter2)</error>;// "'filter2(Predicate<? extends capture<? extends java.lang.String>>)' in 'NodeTraverser' cannot be applied to '(Predicate<capture<? super java.lang.String>>)'"
|
||||
|
||||
traverser2.filter<error descr="'filter(Predicate<capture<? super java.lang.String>>)' in 'NodeTraverser' cannot be applied to '(Predicate<capture<? super java.lang.String>>)'">(filter2)</error>;// "'filter(Predicate<? super capture<? super java.lang.String>>)' in 'NodeTraverser' cannot be applied to '(Predicate<capture<? super java.lang.String>>)'"
|
||||
traverser2.filter<error descr="'filter(Predicate<? super capture<? super java.lang.String>>)' in 'NodeTraverser' cannot be applied to '(Predicate<capture<? super java.lang.String>>)'">(filter2)</error>;// "'filter(Predicate<? super capture<? super java.lang.String>>)' in 'NodeTraverser' cannot be applied to '(Predicate<capture<? super java.lang.String>>)'"
|
||||
traverser2.filter1<error descr="'filter1(Predicate<capture<? super java.lang.String>>)' in 'NodeTraverser' cannot be applied to '(Predicate<capture<? super java.lang.String>>)'">(filter2)</error>;
|
||||
traverser2.filter2<error descr="'filter2(Predicate<? extends capture<? super java.lang.String>>)' in 'NodeTraverser' cannot be applied to '(Predicate<capture<? super java.lang.String>>)'">(filter2)</error>;
|
||||
}
|
||||
|
||||
+2
-2
@@ -39,7 +39,7 @@ class VarianceTesting {
|
||||
k[0] = new VarianceTesting();
|
||||
x.method()[0] = new VarianceTesting();
|
||||
<error descr="Incompatible types. Found: 'VarianceTesting[]', required: 'capture<? extends VarianceTesting>[]'">x.arrayField = new VarianceTesting[10]</error>;
|
||||
l1.addAll<error descr="'addAll(java.util.Collection<capture<? extends VarianceTesting>>)' in 'java.util.List' cannot be applied to '(java.util.ArrayList<VarianceTesting>)'">(new ArrayList<VarianceTesting>())</error>;
|
||||
l1.addAll<error descr="'addAll(java.util.Collection<? extends capture<? extends VarianceTesting>>)' in 'java.util.List' cannot be applied to '(java.util.ArrayList<VarianceTesting>)'">(new ArrayList<VarianceTesting>())</error>;
|
||||
<error descr="Incompatible types. Found: 'java.util.ArrayList<java.lang.String>', required: 'java.util.List<? extends VarianceTesting>'">List<? extends VarianceTesting> l2 = new ArrayList<String>();</error>
|
||||
List<? extends VarianceTesting> l3 = l2;
|
||||
VarianceTesting t = l1.get(0);
|
||||
@@ -214,7 +214,7 @@ public static void foo(List<? extends Foo> foos) {
|
||||
class OtherBug1 {
|
||||
public static void foo(List<? super Foo> foos) {
|
||||
final Comparator<Foo> comparator = createComparator();
|
||||
Collections.sort<error descr="'sort(java.util.List<capture<? super OtherBug1.Foo>>, java.util.Comparator<capture<? super OtherBug1.Foo>>)' in 'java.util.Collections' cannot be applied to '(java.util.List<capture<? super OtherBug1.Foo>>, java.util.Comparator<OtherBug1.Foo>)'">(foos, comparator)</error>;
|
||||
Collections.sort<error descr="'sort(java.util.List<capture<? super OtherBug1.Foo>>, java.util.Comparator<? super capture<? super OtherBug1.Foo>>)' in 'java.util.Collections' cannot be applied to '(java.util.List<capture<? super OtherBug1.Foo>>, java.util.Comparator<OtherBug1.Foo>)'">(foos, comparator)</error>;
|
||||
}
|
||||
|
||||
private static Comparator<Foo> createComparator() {
|
||||
|
||||
Reference in New Issue
Block a user