AssertionError is thrown with a conditional expression in a lambda expression.

Maurizio Cimadamore maurizio.cimadamore at oracle.com
Fri Mar 30 03:23:37 PDT 2012


Thanks for the report - we are looking into this.
Maurizio

On 30/03/12 10:14, bitter_fox wrote:
> Hi,
> The compiler throws AssertionError when we use a condtional expression in a
> lambda expression for the method returns void:
>
> public class Main
> {
>      interface VoidSAM
>      {
>          void invoke();
>      }
>
>      public static void m() {}
>
>      public static void Main(String[] args)
>      {
>          boolean cond = true;
>
>          //cond ? m() : m(); // compile-time error
>
>          VoidSAM sam = () ->  cond ? m() : m(); // AssertionError at
> compile-time
>      }
> }
>
> This is the stack trace:
>
> java.lang.AssertionError
>          at com.sun.tools.javac.jvm.Items$Item.load(Items.java:206)
>          at com.sun.tools.javac.jvm.Gen.visitConditional(Gen.java:1706)
>          at
> com.sun.tools.javac.tree.JCTree$JCConditional.accept(JCTree.java:1119
> )
>          at com.sun.tools.javac.jvm.Gen.genExpr(Gen.java:835)
>          at com.sun.tools.javac.jvm.Gen.visitExec(Gen.java:1640)
>          at
> com.sun.tools.javac.tree.JCTree$JCExpressionStatement.accept(JCTree.j
> ava:1178)
>          at com.sun.tools.javac.jvm.Gen.genDef(Gen.java:682)
>          at com.sun.tools.javac.jvm.Gen.genStat(Gen.java:717)
>          at com.sun.tools.javac.jvm.Gen.genStat(Gen.java:703)
>          at com.sun.tools.javac.jvm.Gen.genStats(Gen.java:754)
>          at com.sun.tools.javac.jvm.Gen.visitBlock(Gen.java:1032)
>          at com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:792)
>          at com.sun.tools.javac.jvm.Gen.genDef(Gen.java:682)
>          at com.sun.tools.javac.jvm.Gen.genStat(Gen.java:717)
>          at com.sun.tools.javac.jvm.Gen.genMethod(Gen.java:910)
>          at com.sun.tools.javac.jvm.Gen.visitMethodDef(Gen.java:883)
>          at
> com.sun.tools.javac.tree.JCTree$JCMethodDecl.accept(JCTree.java:676)
>          at com.sun.tools.javac.jvm.Gen.genDef(Gen.java:682)
>          at com.sun.tools.javac.jvm.Gen.genClass(Gen.java:2248)
>          at
> com.sun.tools.javac.main.JavaCompiler.genCode(JavaCompiler.java:727)
>          at
> com.sun.tools.javac.main.JavaCompiler.generate(JavaCompiler.java:1466
> )
>          at
> com.sun.tools.javac.main.JavaCompiler.generate(JavaCompiler.java:1434
> )
>          at
> com.sun.tools.javac.main.JavaCompiler.compile2(JavaCompiler.java:885)
>
>          at
> com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:844)
>          at com.sun.tools.javac.main.Main.compile(Main.java:430)
>          at com.sun.tools.javac.main.Main.compile(Main.java:344)
>          at com.sun.tools.javac.main.Main.compile(Main.java:335)
>          at com.sun.tools.javac.Main.compile(Main.java:76)
>          at com.sun.tools.javac.Main.main(Main.java:61)
>
> Regards,
> bitter_fox
>



More information about the lambda-dev mailing list