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

Thu, 26 Mar 2015 11:34:50 +0100

author
jlahoda
date
Thu, 26 Mar 2015 11:34:50 +0100
changeset 2734
ba758e1ffa69
parent 2567
9a3e5ce68cef
permissions
-rw-r--r--

8054220: Debugger doesn't show variables *outside* lambda
8058227: Debugger has no access to outer variables inside Lambda
Summary: Put local variables captured by lambda into the lambda method's LocalVariableTable.
Reviewed-by: mcimadamore, rfield

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