hg: lambda/lambda/langtools: 8016175: Add bottom-up type-checking support for unambiguous method references

Ali Ebrahimi ali.ebrahimi1781 at gmail.com
Fri Jun 28 09:59:04 PDT 2013


Hi Maurizio,
In test MethodReference71 I don't get why g(this::m2) is ambiguous.
please clarify this for me. thanks in advance.

+class MethodReference71 {
+    interface F<X> {
+        void m(X x);
+    }
+
+    interface G<X> {
+        Integer m(X x);
+    }
+
+    void m1(Integer i) { }
+    void m2(Integer... i) { }
+
+    <Z> void g(F<Z> f) { }
+    <Z> void g(G<Z> g) { }
+
+    void test() {
+         g(this::m1); //ok
+         g(this::m2); //ambiguous (stuck!)
+    }
+}

Ali Ebrahimi


On Fri, Jun 28, 2013 at 3:26 PM, <maurizio.cimadamore at oracle.com> wrote:

> Changeset: eda4ff70411f
> Author:    mcimadamore
> Date:      2013-06-28 11:54 +0100
> URL:
> http://hg.openjdk.java.net/lambda/lambda/langtools/rev/eda4ff70411f
>
> 8016175: Add bottom-up type-checking support for unambiguous method
> references
>
> ! src/share/classes/com/sun/tools/javac/comp/Attr.java
> ! src/share/classes/com/sun/tools/javac/comp/DeferredAttr.java
> ! src/share/classes/com/sun/tools/javac/comp/Infer.java
> ! src/share/classes/com/sun/tools/javac/comp/Resolve.java
> + test/tools/javac/lambda/MethodReference68.java
> + test/tools/javac/lambda/MethodReference68.out
> + test/tools/javac/lambda/MethodReference69.java
> + test/tools/javac/lambda/MethodReference69.out
> + test/tools/javac/lambda/MethodReference70.java
> + test/tools/javac/lambda/MethodReference70.out
> + test/tools/javac/lambda/MethodReference71.java
> + test/tools/javac/lambda/MethodReference71.out
> ! test/tools/javac/lambda/TargetType60.out
>
>
>


More information about the lambda-dev mailing list