| /* |
| * @test /nodynamiccopyright/ |
| * @bug 8003280 |
| * @summary Add lambda tests |
| * special cases of method references (getClass()/Array.clone()) not handled properly |
| * @compile/fail/ref=MethodReference52.out -XDrawDiagnostics MethodReference52.java |
| */ |
| import java.util.*; |
| |
| class MethodReference52 { |
| |
| interface Clone1 { |
| int[] m(); |
| } |
| |
| interface Clone2 { |
| Object m(); |
| } |
| |
| interface WrongClone { |
| long[] m(); |
| } |
| |
| interface GetClass { |
| Class<? extends List> m(); |
| } |
| |
| interface WrongGetClass { |
| Class<List<String>> m(); |
| } |
| |
| void test(int[] iarr, List<String> ls) { |
| Clone1 c1 = iarr::clone; //ok |
| Clone2 c2 = iarr::clone; //ok - type more generic |
| WrongClone c3 = iarr::clone; //bad return type |
| GetClass c4 = ls::getClass; //ok |
| WrongGetClass c5 = ls::getClass; //bad return type |
| } |
| } |