method references: site substitution for method references without receiver (IDEA-134261)

This commit is contained in:
Anna Kozlova
2014-12-12 20:57:02 +01:00
parent ab8e96f1d3
commit 482de672ef
5 changed files with 24 additions and 5 deletions
@@ -29,10 +29,10 @@ class Test {
static void meth4(I3 s) { }
static {
meth1(<error descr="Inferred type 'java.lang.String' for type parameter 'X' is not within its bound; should extend 'java.lang.Number'">Foo::new</error>);
meth1(Foo::<error descr="Cannot resolve constructor 'Foo'">new</error>);
meth2(Foo::new);
meth3(<error descr="Inferred type 'java.lang.Object' for type parameter 'X' is not within its bound; should extend 'java.lang.Number'">Foo::new</error>);
meth4<error descr="Ambiguous method call: both 'Test.meth4(I1)' and 'Test.meth4(I2)' match">(Foo::new)</error>;
meth3(Foo::<error descr="Cannot resolve constructor 'Foo'">new</error>);
meth4<error descr="Cannot resolve method 'meth4(<method reference>)'">(Foo::new)</error>;
meth1(<error descr="Inferred type 'java.lang.String' for type parameter 'X' is not within its bound; should extend 'java.lang.Number'">Test::foo</error>);
meth2(Test::foo);
@@ -0,0 +1,15 @@
import java.util.*;
import java.util.function.Consumer;
class Test {
public void foo(final Logic<String> logic, Set<Map<String, String>> models) {
final Consumer<Map<String, String>> action = logic::declareField;
}
private static class Logic<E> {
public <T> void declareField(Map<E, T> field) {}
}
}