langtools/test/tools/javac/lambda/TargetType66.java
changeset 16808 90b98d194b75
child 19914 d86271bd430a
equal deleted inserted replaced
16807:b442b47d3ae9 16808:90b98d194b75
       
     1 /*
       
     2  * @test /nodynamiccopyright/
       
     3  * @bug 8009131
       
     4  * @summary Overload: javac should discard methods that lead to errors in lambdas with implicit parameter types
       
     5  * @compile/fail/ref=TargetType66.out -XDrawDiagnostics TargetType66.java
       
     6  */
       
     7 class TargetType66 {
       
     8     interface SAM1 {
       
     9         void m(String s);
       
    10     }
       
    11 
       
    12     interface SAM2 {
       
    13         void m(Integer s);
       
    14     }
       
    15 
       
    16     void g(SAM1 s1) { }
       
    17     void g(SAM2 s2) { }
       
    18 
       
    19     void test() {
       
    20         g(x->{ String s = x; }); //g(SAM1)
       
    21         g(x->{ Integer i = x; }); //g(SAM2)
       
    22         g(x->{ Object o = x; }); //ambiguous
       
    23         g(x->{ Character c = x; }); //error: inapplicable methods
       
    24         g(x->{ Character c = ""; }); //error: incompatible types
       
    25     }
       
    26 }