mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-08-26 00:11:26 +07:00
substitution: do not open unbounded capture during substitution (IDEA-125423)
(cherry picked from commit 1a8180cabca79b6ab2972a759aaffaa043f60c57)
This commit is contained in:
+1
-1
@@ -13,7 +13,7 @@ class Test {
|
||||
|
||||
class FooBar<T> {
|
||||
void foo(final FooBar<?> fooBar){
|
||||
//fooBar.supertype(Iterable.class);
|
||||
fooBar.supertype<error descr="'supertype(java.lang.Class<? super capture<?>>)' in 'FooBar' cannot be applied to '(java.lang.Class<java.lang.Iterable>)'">(Iterable.class)</error>;
|
||||
}
|
||||
|
||||
void foo1(final FooBar<? super T> fooBar){
|
||||
|
||||
+64
@@ -0,0 +1,64 @@
|
||||
|
||||
interface NodeTraverser<T> {
|
||||
NodeTraverser<T> filter(Predicate<? super T> filter);
|
||||
|
||||
NodeTraverser<T> filter1(Predicate<T> filter);
|
||||
|
||||
NodeTraverser<T> filter2(Predicate<? extends T> filter);
|
||||
}
|
||||
|
||||
interface Predicate<P> {
|
||||
}
|
||||
|
||||
class Test {
|
||||
|
||||
void foo(NodeTraverser<?> traverser,
|
||||
NodeTraverser<? extends String> traverser1,
|
||||
NodeTraverser<? super String> traverser2,
|
||||
|
||||
Predicate<?> filter,
|
||||
Predicate<? extends String> filter1,
|
||||
Predicate<? super String> filter2) {
|
||||
|
||||
traverser.filter<error descr="'filter(Predicate<? super capture<?>>)' in 'NodeTraverser' cannot be applied to '(Predicate<capture<?>>)'">(filter)</error>;
|
||||
traverser.filter1<error descr="'filter1(Predicate<capture<?>>)' in 'NodeTraverser' cannot be applied to '(Predicate<capture<?>>)'">(filter)</error>;
|
||||
traverser.filter2<error descr="'filter2(Predicate<capture<?>>)' in 'NodeTraverser' cannot be applied to '(Predicate<capture<?>>)'">(filter)</error>; //"'filter2(Predicate<? extends capture<?>>)' in 'NodeTraverser' cannot be applied to '(Predicate<capture<?>>)'"
|
||||
|
||||
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<?>>)'"
|
||||
|
||||
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.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>;
|
||||
|
||||
|
||||
|
||||
traverser.filter<error descr="'filter(Predicate<? super capture<?>>)' in 'NodeTraverser' cannot be applied to '(Predicate<capture<? extends java.lang.String>>)'">(filter1)</error>;
|
||||
traverser.filter1<error descr="'filter1(Predicate<capture<?>>)' in 'NodeTraverser' cannot be applied to '(Predicate<capture<? extends java.lang.String>>)'">(filter1)</error>;
|
||||
traverser.filter2<error descr="'filter2(Predicate<capture<?>>)' in 'NodeTraverser' cannot be applied to '(Predicate<capture<? extends java.lang.String>>)'">(filter1)</error>;// "'filter2(Predicate<? extends capture<?>>)' in 'NodeTraverser' cannot be applied to '(Predicate<capture<? extends java.lang.String>>)'"
|
||||
|
||||
traverser1.filter<error descr="'filter(Predicate<? super capture<? extends java.lang.String>>)' in 'NodeTraverser' cannot be applied to '(Predicate<capture<? extends java.lang.String>>)'">(filter1)</error>;
|
||||
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.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);
|
||||
|
||||
|
||||
|
||||
traverser.filter<error descr="'filter(Predicate<? super capture<?>>)' in 'NodeTraverser' cannot be applied to '(Predicate<capture<? super java.lang.String>>)'">(filter2)</error>;
|
||||
traverser.filter1<error descr="'filter1(Predicate<capture<?>>)' in 'NodeTraverser' cannot be applied to '(Predicate<capture<? super java.lang.String>>)'">(filter2)</error>;
|
||||
traverser.filter2<error descr="'filter2(Predicate<capture<?>>)' in 'NodeTraverser' cannot be applied to '(Predicate<capture<? super java.lang.String>>)'">(filter2)</error>;// "'filter2(Predicate<? extends capture<?>>)' in 'NodeTraverser' cannot be applied to '(Predicate<capture<? super java.lang.String>>)'"
|
||||
|
||||
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>>)'"
|
||||
|
||||
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.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>;
|
||||
}
|
||||
|
||||
}
|
||||
+1
-1
@@ -45,7 +45,7 @@ class AllPredicate<T>
|
||||
}
|
||||
|
||||
public static void foo(SortedMap<?, ?> sourceSortedMap) {
|
||||
new TreeMap<Object, Object>(<warning descr="Unchecked cast: 'java.util.Comparator<capture<?>>' to 'java.util.Comparator<? super java.lang.Object>'">(Comparator<? super Object>) sourceSortedMap.comparator()</warning>);
|
||||
new TreeMap<Object, Object>(<warning descr="Unchecked cast: 'java.util.Comparator<capture<? super capture<?>>>' to 'java.util.Comparator<? super java.lang.Object>'">(Comparator<? super Object>) sourceSortedMap.comparator()</warning>);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -45,7 +45,7 @@ class AllPredicate<T>
|
||||
}
|
||||
|
||||
public static void foo(SortedMap<?, ?> sourceSortedMap) {
|
||||
new TreeMap<Object, Object>(<warning descr="Unchecked cast: 'java.util.Comparator<capture<?>>' to 'java.util.Comparator<? super java.lang.Object>'">(Comparator<? super Object>) sourceSortedMap.comparator()</warning>);
|
||||
new TreeMap<Object, Object>(<warning descr="Unchecked cast: 'java.util.Comparator<capture<? super capture<?>>>' to 'java.util.Comparator<? super java.lang.Object>'">(Comparator<? super Object>) sourceSortedMap.comparator()</warning>);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user