test/tools/javac/lambda/T8033483/IgnoreLambdaBodyDuringResolutionTest2.java

Tue, 29 Mar 2016 10:48:49 +0000

author
dbuck
date
Tue, 29 Mar 2016 10:48:49 +0000
changeset 3102
e74dd6df4d4c
parent 2567
9a3e5ce68cef
permissions
-rw-r--r--

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

vromero@2567 1 /*
vromero@2567 2 * @test /nodynamiccopyright/
vromero@2567 3 * @bug 8033483
vromero@2567 4 * @summary Should ignore nested lambda bodies during overload resolution
vromero@2567 5 * @compile/fail/ref=IgnoreLambdaBodyDuringResolutionTest2.out -XDrawDiagnostics IgnoreLambdaBodyDuringResolutionTest2.java
vromero@2567 6 */
vromero@2567 7
vromero@2567 8 class IgnoreLambdaBodyDuringResolutionTest2 {
vromero@2567 9 interface SAM<S> {
vromero@2567 10 boolean test(S t);
vromero@2567 11 }
vromero@2567 12
vromero@2567 13 <I, T extends I> I bar(final T l) {
vromero@2567 14 return null;
vromero@2567 15 }
vromero@2567 16
vromero@2567 17 class D<D1, D2> {
vromero@2567 18 void foo() {
vromero@2567 19 m(bar(e -> false));
vromero@2567 20 }
vromero@2567 21
vromero@2567 22 void m(Class<D1> arg) {}
vromero@2567 23 void m(SAM<D2> arg) {}
vromero@2567 24 }
vromero@2567 25
vromero@2567 26 class F {
vromero@2567 27 void foo() {
vromero@2567 28 m(bar((String e) -> false));
vromero@2567 29 }
vromero@2567 30
vromero@2567 31 <F1> void m(Class<F1> arg) {}
vromero@2567 32 <F2> void m(SAM<F2> arg) {}
vromero@2567 33 }
vromero@2567 34 }

mercurial