mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +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() {
|
||||
|
||||
+2
-2
@@ -3,13 +3,13 @@ abstract class A<T> {
|
||||
<K> void baz35(B<K, ? extends K> a) {}
|
||||
abstract B<T,? super T> foo35();
|
||||
void bar35(A<? super T> a){
|
||||
baz35<error descr="'baz35(B<K,? extends K>)' in 'A' cannot be applied to '(B<capture<? super T>,capture<? super T>>)'">(a.foo35())</error>;
|
||||
baz35<error descr="'baz35(B<K,? extends K>)' in 'A' cannot be applied to '(B<capture<? super T>,capture<? super capture<? super T>>>)'">(a.foo35())</error>;
|
||||
}
|
||||
|
||||
|
||||
<K> void baz44(B<K, ? extends K> a) {}
|
||||
abstract B<? super T,? super T> foo44();
|
||||
void bar44(A<? super T> a){
|
||||
baz44<error descr="'baz44(B<K,? extends K>)' in 'A' cannot be applied to '(B<capture<? super T>,capture<? super T>>)'">(a.foo44())</error>;
|
||||
baz44<error descr="'baz44(B<K,? extends K>)' in 'A' cannot be applied to '(B<capture<? super capture<? super T>>,capture<? super capture<? super T>>>)'">(a.foo44())</error>;
|
||||
}
|
||||
}
|
||||
+2
-2
@@ -10,7 +10,7 @@ abstract class A<T> {
|
||||
<K> void baz39(B<K, ? extends K> a) {}
|
||||
abstract B<T,? extends T> foo39();
|
||||
void bar39(A<? extends T> a){
|
||||
baz39<error descr="'baz39(B<K,? extends K>)' in 'A' cannot be applied to '(B<capture<? extends T>,capture<? extends T>>)'">(a.foo39())</error>;
|
||||
baz39(a.foo39());
|
||||
}
|
||||
|
||||
<K> void baz52(B<K, ? extends K> a) {}
|
||||
@@ -22,7 +22,7 @@ abstract class A<T> {
|
||||
<K> void baz54(B<K, ? extends K> a) {}
|
||||
abstract B<? extends T,? extends T> foo54();
|
||||
void bar54(A<? extends T> a){
|
||||
baz54<error descr="'baz54(B<K,? extends K>)' in 'A' cannot be applied to '(B<capture<? extends T>,capture<? extends T>>)'">(a.foo54())</error>;
|
||||
baz54<error descr="'baz54(B<K,? extends K>)' in 'A' cannot be applied to '(B<capture<? extends capture<? extends T>>,capture<? extends capture<? extends T>>>)'">(a.foo54())</error>;
|
||||
}
|
||||
|
||||
|
||||
|
||||
+1
-1
@@ -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);
|
||||
|
||||
+1
-1
@@ -10,7 +10,7 @@ class NachCollections<K,V> {
|
||||
Collection<? super Map.Entry<K,V>> c2,
|
||||
Consumer<Map.Entry<K, V>> a) {
|
||||
c1.forEach(consumer(a));
|
||||
c2.forEach<error descr="'forEach(java.util.function.Consumer<capture<? super java.util.Map.Entry<K,V>>>)' in 'java.lang.Iterable' cannot be applied to '(java.util.function.Consumer<java.util.Map.Entry<K,V>>)'">(consumer(a))</error>;
|
||||
c2.forEach<error descr="'forEach(java.util.function.Consumer<? super capture<? super java.util.Map.Entry<K,V>>>)' in 'java.lang.Iterable' cannot be applied to '(java.util.function.Consumer<java.util.Map.Entry<K,V>>)'">(consumer(a))</error>;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+5
-5
@@ -17,7 +17,7 @@ class Test2 {
|
||||
int foo();
|
||||
}
|
||||
{
|
||||
IntReturnType aI = () -> <error descr="Bad return type in lambda expression: void cannot be converted to int">System.out.println()</error>;
|
||||
<error descr="Incompatible types. Found: '<lambda expression>', required: 'Test2.IntReturnType'">IntReturnType aI = () -> System.out.println();</error>
|
||||
IntReturnType aI1 = () -> {System.out.println();<error descr="Missing return statement">}</error>;
|
||||
IntReturnType aI2 = () -> {return 1;};
|
||||
IntReturnType aI3 = () -> 1;
|
||||
@@ -31,7 +31,7 @@ class Test3 {
|
||||
X foo();
|
||||
}
|
||||
{
|
||||
XReturnType<Object> aI = () -> <error descr="Bad return type in lambda expression: void cannot be converted to Object">System.out.println()</error>;
|
||||
<error descr="Incompatible types. Found: '<lambda expression>', required: 'Test3.XReturnType<java.lang.Object>'">XReturnType<Object> aI = () -> System.out.println();</error>
|
||||
XReturnType<Object> aI1 = () -> {System.out.println();<error descr="Missing return statement">}</error>;
|
||||
XReturnType<Object> aI2 = () -> {return 1;};
|
||||
XReturnType<Object> aI3 = () -> 1;
|
||||
@@ -47,10 +47,10 @@ class Test4 {
|
||||
}
|
||||
|
||||
{
|
||||
YXReturnType<Object> aI = () -> <error descr="Bad return type in lambda expression: void cannot be converted to Test4.Y<Object>">System.out.println()</error>;
|
||||
<error descr="Incompatible types. Found: '<lambda expression>', required: 'Test4.YXReturnType<java.lang.Object>'">YXReturnType<Object> aI = () -> System.out.println();</error>
|
||||
YXReturnType<Object> aI1 = () -> {System.out.println();<error descr="Missing return statement">}</error>;
|
||||
YXReturnType<Object> aI2 = () -> {return <error descr="Bad return type in lambda expression: int cannot be converted to Test4.Y<Object>">1</error>;};
|
||||
YXReturnType<Object> aI3 = () -> <error descr="Bad return type in lambda expression: int cannot be converted to Test4.Y<Object>">1</error>;
|
||||
<error descr="Incompatible types. Found: '<lambda expression>', required: 'Test4.YXReturnType<java.lang.Object>'">YXReturnType<Object> aI2 = () -> {return 1;};</error>
|
||||
<error descr="Incompatible types. Found: '<lambda expression>', required: 'Test4.YXReturnType<java.lang.Object>'">YXReturnType<Object> aI3 = () -> 1;</error>
|
||||
YXReturnType<Object> aI4 = () -> new Y<Object>(){};
|
||||
YXReturnType<Object> aIDiamond = () -> new Y<>();
|
||||
|
||||
|
||||
+1
-1
@@ -68,5 +68,5 @@ class ReturnTypeChecks1 {
|
||||
}
|
||||
|
||||
I<Integer, Integer> accepted = i -> { return i; };
|
||||
I<Double, Integer> rejected = i -> { return <error descr="Bad return type in lambda expression: Double cannot be converted to Integer">i</error>; };
|
||||
<error descr="Incompatible types. Found: '<lambda expression>', required: 'ReturnTypeChecks1.I<java.lang.Double,java.lang.Integer>'">I<Double, Integer> rejected = i -> { return i; };</error>
|
||||
}
|
||||
|
||||
+3
-3
@@ -24,8 +24,8 @@ class Test {
|
||||
boolean b1 = as.<error descr="Ambiguous method call: both 'Foo.forAll(I<String, Boolean>)' and 'Foo.forAll(II<String, String>)' match">forAll</error>(s -> ac.<error descr="Ambiguous method call: both 'Foo.forAll(I<Character, Boolean>)' and 'Foo.forAll(II<Character, String>)' match">forAll</error>(c -> false));
|
||||
String s1 = as.<error descr="Ambiguous method call: both 'Foo.forAll(I<String, Boolean>)' and 'Foo.forAll(II<String, String>)' match">forAll</error>(s -> ac.<error descr="Ambiguous method call: both 'Foo.forAll(I<Character, Boolean>)' and 'Foo.forAll(II<Character, String>)' match">forAll</error>(c -> ""));
|
||||
boolean b2 = as.<error descr="Ambiguous method call: both 'Foo.forAll(I<String, Boolean>)' and 'Foo.forAll(II<String, String>)' match">forAll</error>(s -> ac.<error descr="Ambiguous method call: both 'Foo.forAll(I<Character, Boolean>)' and 'Foo.forAll(II<Character, String>)' match">forAll</error>(c -> ""));
|
||||
String s2 = as.forAll2(s -> ac.forAll2(c -> <error descr="Bad return type in lambda expression: boolean cannot be converted to String">false</error>));
|
||||
boolean b3 = as.forAll((I<String, Boolean>)s -> ac.forAll((I<Character, Boolean>)c -> <error descr="Bad return type in lambda expression: String cannot be converted to Boolean">""</error>));
|
||||
String s3 = as.forAll((II<String, String>)s -> ac.forAll((II<Character, String>)c -> <error descr="Bad return type in lambda expression: boolean cannot be converted to String">false</error>));
|
||||
String s2 = as.forAll2(s -> ac.forAll2<error descr="'forAll2(Test.II<java.lang.Character,java.lang.String>)' in 'Test.Foo' cannot be applied to '(<lambda expression>)'">(c -> false)</error>);
|
||||
boolean b3 = as.forAll((I<String, Boolean>)s -> ac.forAll(<error descr="Inconvertible types; cannot cast '<lambda expression>' to 'Test.I<java.lang.Character,java.lang.Boolean>'">(I<Character, Boolean>)c -> ""</error>));
|
||||
String s3 = as.forAll((II<String, String>)s -> ac.forAll(<error descr="Inconvertible types; cannot cast '<lambda expression>' to 'Test.II<java.lang.Character,java.lang.String>'">(II<Character, String>)c -> false</error>));
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -32,7 +32,7 @@ class Test1 {
|
||||
I<Object> lO = x->x;
|
||||
bar2("", lO);
|
||||
|
||||
I<String> lS = x-><error descr="Bad return type in lambda expression: List<String> cannot be converted to String">x</error>;
|
||||
<error descr="Incompatible types. Found: '<lambda expression>', required: 'Test1.I<java.lang.String>'">I<String> lS = x->x;</error>
|
||||
bar2("", lS);
|
||||
|
||||
bar2("", x -> x);
|
||||
|
||||
+1
-1
@@ -7,7 +7,7 @@ interface I<T>{
|
||||
class C {
|
||||
void bar(I<?> x) {
|
||||
x.foo(a -> {
|
||||
x.foo(y -> <error descr="Bad return type in lambda expression: capture of ? cannot be converted to capture of ?">a</error>);
|
||||
x.foo<error descr="'foo(java.util.function.Function<capture<?>,capture<?>>)' in 'I' cannot be applied to '(<lambda expression>)'">(y -> a)</error>;
|
||||
return a;
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user