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

bitter_fox bitterfoxc at gmail.com
Fri Mar 30 02:14:35 PDT 2012


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