test/tools/javac/lambda/MethodReference64.java

Tue, 04 Jun 2013 11:31:12 +0100

author
mcimadamore
date
Tue, 04 Jun 2013 11:31:12 +0100
changeset 1799
32c50b5f70b5
parent 0
959103a6100f
permissions
-rw-r--r--

8008160: Five lambda TargetType tests have @ignore
Summary: Remove @ignore flags from tests that now pass
Reviewed-by: jjg

aoqi@0 1 /*
aoqi@0 2 * @test /nodynamiccopyright/
aoqi@0 3 * @bug 8008540 8008539 8008538
aoqi@0 4 * @summary Constructor reference to non-reifiable array should be rejected
aoqi@0 5 * @compile/fail/ref=MethodReference64.out -XDrawDiagnostics MethodReference64.java
aoqi@0 6 */
aoqi@0 7 class MethodReference64 {
aoqi@0 8 interface ClassFactory {
aoqi@0 9 Object m();
aoqi@0 10 }
aoqi@0 11
aoqi@0 12 interface ArrayFactory {
aoqi@0 13 Object m(int i);
aoqi@0 14 }
aoqi@0 15
aoqi@0 16 @interface Anno { }
aoqi@0 17
aoqi@0 18 enum E { }
aoqi@0 19
aoqi@0 20 interface I { }
aoqi@0 21
aoqi@0 22 static class Foo<X> { }
aoqi@0 23
aoqi@0 24 void m(ClassFactory cf) { }
aoqi@0 25 void m(ArrayFactory cf) { }
aoqi@0 26
aoqi@0 27 void testAssign() {
aoqi@0 28 ClassFactory c1 = Anno::new; //error
aoqi@0 29 ClassFactory c2 = E::new; //error
aoqi@0 30 ClassFactory c3 = I::new; //error
aoqi@0 31 ClassFactory c4 = Foo<?>::new; //error
aoqi@0 32 ClassFactory c5 = 1::new; //error
aoqi@0 33 ArrayFactory a1 = Foo<?>[]::new; //ok
aoqi@0 34 ArrayFactory a2 = Foo<? extends String>[]::new; //error
aoqi@0 35 }
aoqi@0 36
aoqi@0 37 void testMethod() {
aoqi@0 38 m(Anno::new); //error
aoqi@0 39 m(E::new); //error
aoqi@0 40 m(I::new); //error
aoqi@0 41 m(Foo<?>::new); //error
aoqi@0 42 m(1::new); //error
aoqi@0 43 m(Foo<?>[]::new); //ok - resolves to m(ArrayFactory)
aoqi@0 44 m(Foo<? extends String>[]::new); //error
aoqi@0 45 }
aoqi@0 46 }

mercurial