java method ref highlighting: don't mirror errors of not applicable methods of return type (IDEA-224306)

GitOrigin-RevId: 40b4293c754640445b9fac741eab24261e8060cc
This commit is contained in:
Anna.Kozlova
2019-10-10 11:33:13 +02:00
committed by intellij-monorepo-bot
parent 1d55c64626
commit 589b029a97
6 changed files with 33 additions and 14 deletions

View File

@@ -70,8 +70,8 @@ class MyTest3<X> {
static void test(I<Integer> s) { }
public static void main(String[] args) {
I<Integer> s = <error descr="Bad return type in method reference: cannot convert MyTest3<java.lang.String> to MyTest3<java.lang.Integer>">MyTest3<String>::new</error>;
test(<error descr="Bad return type in method reference: cannot convert MyTest3<java.lang.String> to MyTest3<java.lang.Integer>">MyTest3<String>::new</error>);
I<Integer> s = MyTest3<String>::<error descr="Incompatible types: Integer is not convertible to String">new</error>;
test(MyTest3<String>::<error descr="Incompatible types: Integer is not convertible to String">new</error>);
}
}

View File

@@ -5,6 +5,6 @@ class Outer<K> {
{
//wrong number of parameters as well as a wrong expected type
final IntFunction<Outer[]> aNew = <error descr="Bad return type in method reference: cannot convert Outer to Outer[]">Outer::new</error>;
final IntFunction<Outer[]> aNew = Outer::<error descr="Cannot resolve constructor 'Outer'">new</error>;
}
}

View File

@@ -0,0 +1,18 @@
import java.util.function.Function;
abstract class Logger {
public void error(Throwable t) { }
public abstract void error(String message, Throwable t, String... details);
}
public class JavaTest {
private static Logger ourLogger = null;
void test() {
test2(<error descr="Bad return type in method reference: cannot convert void to java.lang.Void">ourLogger::error</error>);
test3(<error descr="Bad return type in method reference: cannot convert void to java.lang.Integer">ourLogger::error</error>);
}
void test2(Function<Throwable, Void> x) { }
void test3(Function<Throwable, Integer> x) { }
}