test/tools/javac/lambda/T8033483/IgnoreLambdaBodyDuringResolutionTest1.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=IgnoreLambdaBodyDuringResolutionTest1.out -XDrawDiagnostics IgnoreLambdaBodyDuringResolutionTest1.java
vromero@2567 6 */
vromero@2567 7
vromero@2567 8 class IgnoreLambdaBodyDuringResolutionTest1 {
vromero@2567 9 interface SAM<T> {
vromero@2567 10 T action(T t);
vromero@2567 11 }
vromero@2567 12
vromero@2567 13 <T> T m(SAM<T> op) {
vromero@2567 14 return null;
vromero@2567 15 }
vromero@2567 16
vromero@2567 17 class B {
vromero@2567 18 B x() {
vromero@2567 19 return this;
vromero@2567 20 }
vromero@2567 21 }
vromero@2567 22
vromero@2567 23 class C {}
vromero@2567 24
vromero@2567 25 void foo(B arg) {}
vromero@2567 26 void foo(C arg) {}
vromero@2567 27
vromero@2567 28 void bar() {
vromero@2567 29 foo(m(arg -> new B()));
vromero@2567 30 }
vromero@2567 31 }

mercurial