/* * @test /nodynamiccopyright/ * @bug 8008540 8008539 8008538 * @summary Constructor reference to non-reifiable array should be rejected * @compile/fail/ref=MethodReference64.out -XDrawDiagnostics MethodReference64.java */ class MethodReference64 { interface ClassFactory { Object m(); } interface ArrayFactory { Object m(int i); } @interface Anno { } enum E { } interface I { } static class Foo<X> { } void m(ClassFactory cf) { } void m(ArrayFactory cf) { } void testAssign() { ClassFactory c1 = Anno::new; //error ClassFactory c2 = E::new; //error ClassFactory c3 = I::new; //error ClassFactory c4 = Foo<?>::new; //error ClassFactory c5 = 1::new; //error ArrayFactory a1 = Foo<?>[]::new; //ok ArrayFactory a2 = Foo<? extends String>[]::new; //error } void testMethod() { m(Anno::new); //error m(E::new); //error m(I::new); //error m(Foo<?>::new); //error m(1::new); //error m(Foo<?>[]::new); //ok - resolves to m(ArrayFactory) m(Foo<? extends String>[]::new); //error } }