hg: lambda/lambda/langtools: Conformance fix: Add support for generic functional descriptors

maurizio.cimadamore at oracle.com maurizio.cimadamore at oracle.com
Wed Nov 28 06:14:59 PST 2012


Changeset: c72ca936299c
Author:    mcimadamore
Date:      2012-11-28 14:14 +0000
URL:       http://hg.openjdk.java.net/lambda/lambda/langtools/rev/c72ca936299c

Conformance fix: Add support for generic functional descriptors

A generic functional descriptor is a valid target for a method reference. The following code now compiles:

interface F {
    <X> void m(X x);
}

class Test {
    <Z> void g(Z z) { ... }

    void test() {
        F f = this::g;
        f.m(1); //ok X inferred as Integer
        f.m(""); //ok X inferred as String
    }
}

Note: generic methods are still _not_ legal target for lambda expressions, as per EDR.

! src/share/classes/com/sun/tools/javac/code/Types.java
! src/share/classes/com/sun/tools/javac/comp/Attr.java
! src/share/classes/com/sun/tools/javac/resources/compiler.properties
- test/tools/javac/diags/examples/InvalidGenericDescInFunctionalInterface.java
+ test/tools/javac/diags/examples/InvalidGenericLambdaTarget.java
+ test/tools/javac/lambda/FunctionalInterfaceConversionTest.java
- test/tools/javac/lambda/LambdaConversionTest.java
+ test/tools/javac/lambda/MethodReference57.java
+ test/tools/javac/lambda/MethodReference58.java
+ test/tools/javac/lambda/MethodReference58.out



More information about the lambda-dev mailing list