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
aoqi@0 | 1 | /* |
aoqi@0 | 2 | * @test /nodynamiccopyright/ |
aoqi@0 | 3 | * @bug 8015648 |
aoqi@0 | 4 | * @summary Duplicate variable in lambda causes javac crash |
aoqi@0 | 5 | * @compile/fail/ref=LambdaScope05.out -XDrawDiagnostics LambdaScope05.java |
aoqi@0 | 6 | */ |
aoqi@0 | 7 | |
aoqi@0 | 8 | class LambdaScope05 { |
aoqi@0 | 9 | interface VoidFun1 { |
aoqi@0 | 10 | void m(int i); |
aoqi@0 | 11 | } |
aoqi@0 | 12 | |
aoqi@0 | 13 | static Runnable r1 = () -> { VoidFun1 p = p -> { }; }; |
aoqi@0 | 14 | Runnable r2 = () -> { VoidFun1 p = p -> { }; }; |
aoqi@0 | 15 | |
aoqi@0 | 16 | static { |
aoqi@0 | 17 | Runnable r = () -> { VoidFun1 p = p -> { }; }; |
aoqi@0 | 18 | } |
aoqi@0 | 19 | |
aoqi@0 | 20 | { |
aoqi@0 | 21 | Runnable r = () -> { VoidFun1 p = p -> { }; }; |
aoqi@0 | 22 | } |
aoqi@0 | 23 | |
aoqi@0 | 24 | static void m_static() { |
aoqi@0 | 25 | Runnable r = () -> { VoidFun1 p = p -> { }; }; |
aoqi@0 | 26 | } |
aoqi@0 | 27 | |
aoqi@0 | 28 | void m() { |
aoqi@0 | 29 | Runnable r = () -> { VoidFun1 p = p -> { }; }; |
aoqi@0 | 30 | } |
aoqi@0 | 31 | } |