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