Thu, 26 Mar 2015 11:34:50 +0100
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 | } |