With #7411, we can now create types that are comparable to unrelated types. The Java backend has trouble with this for types that are comparable to boxed types:
void run() {
print(C(1) < 5);
}
class C(Integer i) satisfies Comparable<Integer> {
compare(Integer o) => i <=> o;
}
source/simple/run.ceylon:2: error: Ceylon backend error: bad operand types for binary operator '<'
print(C(1) < 5);
^
first type: C
second type: long
Note: Created module simple/1.0.0
ceylon compile: Fatal error: The compiler exited abnormally (4) due to a bug in the compiler.
Please report it:
https://github.com/ceylon/ceylon/issues/new
Please include:
* the stacktrace printed below
* a description of what you were trying to compile.
Thank you!
org.eclipse.ceylon.compiler.CompilerBugException: Bug
at org.eclipse.ceylon.compiler.CeylonCompileTool.handleExitCode(CeylonCompileTool.java:933)
at org.eclipse.ceylon.compiler.CeylonCompileTool.run(CeylonCompileTool.java:915)
at org.eclipse.ceylon.common.tools.CeylonTool.run(CeylonTool.java:537)
at org.eclipse.ceylon.common.tools.CeylonTool.execute(CeylonTool.java:413)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.eclipse.ceylon.launcher.Launcher.runInJava7Checked(Launcher.java:117)
at org.eclipse.ceylon.launcher.Launcher.run(Launcher.java:47)
at org.eclipse.ceylon.launcher.Launcher.run(Launcher.java:40)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.eclipse.ceylon.launcher.Bootstrap.runVersion(Bootstrap.java:171)
at org.eclipse.ceylon.launcher.Bootstrap.runInternal(Bootstrap.java:126)
at org.eclipse.ceylon.launcher.Bootstrap.run(Bootstrap.java:102)
at org.eclipse.ceylon.launcher.Bootstrap.main(Bootstrap.java:94)
Caused by: java.lang.NullPointerException
at org.eclipse.ceylon.langtools.tools.javac.comp.TransTypes.visitBinary(TransTypes.java:755)
at org.eclipse.ceylon.langtools.tools.javac.tree.JCTree$JCBinary.accept(JCTree.java:1784)
at org.eclipse.ceylon.langtools.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at org.eclipse.ceylon.langtools.tools.javac.comp.TransTypes.translate(TransTypes.java:501)
at org.eclipse.ceylon.langtools.tools.javac.comp.TransTypes.translateArgs(TransTypes.java:217)
at org.eclipse.ceylon.langtools.tools.javac.comp.TransTypes.visitApply(TransTypes.java:693)
at org.eclipse.ceylon.langtools.tools.javac.tree.JCTree$JCMethodInvocation.accept(JCTree.java:1464)
at org.eclipse.ceylon.langtools.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at org.eclipse.ceylon.langtools.tools.javac.comp.TransTypes.translate(TransTypes.java:501)
at org.eclipse.ceylon.langtools.tools.javac.comp.TransTypes.translateArgs(TransTypes.java:217)
at org.eclipse.ceylon.langtools.tools.javac.comp.TransTypes.visitApply(TransTypes.java:693)
at org.eclipse.ceylon.langtools.tools.javac.tree.JCTree$JCMethodInvocation.accept(JCTree.java:1464)
at org.eclipse.ceylon.langtools.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at org.eclipse.ceylon.langtools.tools.javac.comp.TransTypes.translate(TransTypes.java:501)
at org.eclipse.ceylon.langtools.tools.javac.comp.TransTypes.visitExec(TransTypes.java:655)
at org.eclipse.ceylon.langtools.tools.javac.tree.JCTree$JCExpressionStatement.accept(JCTree.java:1295)
at org.eclipse.ceylon.langtools.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at org.eclipse.ceylon.langtools.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:70)
at org.eclipse.ceylon.langtools.tools.javac.tree.TreeTranslator.visitBlock(TreeTranslator.java:162)
at org.eclipse.ceylon.langtools.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:908)
at org.eclipse.ceylon.langtools.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at org.eclipse.ceylon.langtools.tools.javac.comp.TransTypes.translate(TransTypes.java:501)
at org.eclipse.ceylon.langtools.tools.javac.comp.TransTypes.visitMethodDef(TransTypes.java:536)
at org.eclipse.ceylon.langtools.tools.javac.tree.JCTree$JCMethodDecl.accept(JCTree.java:777)
at org.eclipse.ceylon.langtools.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at org.eclipse.ceylon.langtools.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:70)
at org.eclipse.ceylon.langtools.tools.javac.tree.TreeTranslator.visitClassDef(TreeTranslator.java:134)
at org.eclipse.ceylon.langtools.tools.javac.comp.TransTypes.translateClass(TransTypes.java:1059)
at org.eclipse.ceylon.langtools.tools.javac.comp.TransTypes.visitClassDef(TransTypes.java:522)
at org.eclipse.ceylon.langtools.tools.javac.tree.JCTree$JCClassDecl.accept(JCTree.java:692)
at org.eclipse.ceylon.langtools.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at org.eclipse.ceylon.langtools.tools.javac.comp.TransTypes.translate(TransTypes.java:501)
at org.eclipse.ceylon.langtools.tools.javac.comp.TransTypes.translateTopLevelClass(TransTypes.java:1087)
at org.eclipse.ceylon.langtools.tools.javac.main.JavaCompiler.desugar(JavaCompiler.java:1487)
at org.eclipse.ceylon.compiler.java.tools.LanguageCompiler.desugar(LanguageCompiler.java:848)
at org.eclipse.ceylon.langtools.tools.javac.main.JavaCompiler.desugar(JavaCompiler.java:1357)
at org.eclipse.ceylon.langtools.tools.javac.main.JavaCompiler.compile2(JavaCompiler.java:902)
at org.eclipse.ceylon.langtools.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:860)
at org.eclipse.ceylon.compiler.java.tools.LanguageCompiler.compile(LanguageCompiler.java:270)
at org.eclipse.ceylon.compiler.java.launcher.Main.compile(Main.java:660)
at org.eclipse.ceylon.compiler.java.launcher.Main.compile(Main.java:563)
at org.eclipse.ceylon.compiler.java.launcher.Main.compile(Main.java:555)
at org.eclipse.ceylon.compiler.java.launcher.Main.compile(Main.java:544)
at org.eclipse.ceylon.compiler.CeylonCompileTool.run(CeylonCompileTool.java:914)
... 17 more
With #7411, we can now create types that are comparable to unrelated types. The Java backend has trouble with this for types that are comparable to boxed types: