Tue, 29 Mar 2016 10:48:49 +0000
8143647: Javac compiles method reference that allows results in an IllegalAccessError
Summary: Lambda implementation method synthesized by javac should not mention inaccessible types.
Reviewed-by: mcimadamore
1 /*
2 * @test /nodynamiccopyright/
3 * @bug 8003280
4 * @summary Add lambda tests
5 * crash when incompatible method reference is found in conditional expression
6 * @compile/fail/ref=TargetType33.out -XDrawDiagnostics TargetType33.java
7 */
9 class TargetType33 {
11 interface A<X> {
12 X m();
13 }
15 void m(A<Integer> a) { }
16 <Z> void m2(A<Z> a) { }
18 int intRes(Object o) { return 42; }
20 void testMethodRef(boolean flag) {
21 A<Integer> c = flag ? this::intRes : this::intRes;
22 m(flag ? this::intRes : this::intRes);
23 m2(flag ? this::intRes : this::intRes);
24 }
25 }