Wed, 23 Oct 2013 07:50:04 +0200
8026861: Wrong LineNumberTable for variable declarations in lambdas
Summary: Setting or correcting positions for many trees produced by LambdaToMethod.
Reviewed-by: vromero, 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 | } |