ClassCastException when CallableConstructorDeclaration.invoke
Closed this issue · 1 comments
Podmev commented
This code throws ClassCastException
import ceylon.language.meta.declaration {
CallableConstructorDeclaration,
ClassDeclaration
}
import ceylon.time {
DateTime,
now
}
interface ITemp{
shared formal String source;
shared formal DateTime dateTime;
}
serializable
class Temp(
shared actual String source,
shared actual DateTime dateTime = now().dateTime()) satisfies ITemp{
shared actual String string => "Temp:``source``, ``dateTime``";
}
shared void foo(){
ClassDeclaration decl = `Temp`.declaration;
assert (exists firstConstructor = decl.constructorDeclarations().first,
is CallableConstructorDeclaration firstConstructor);
print(firstConstructor.invoke([], "s"));
}
with stacktrace:
ceylon run: Cannot cast ceylon.language.String to com.redhat.ceylon.compiler.
java.runtime.serialization.$Serialization$
java.lang.ClassCastException: Cannot cast ceylon.language.String to com.redhat.ceylon.compiler.java.runtime.serialization.$Serialization$
at java.lang.invoke.MethodHandleImpl.newClassCastException(MethodHandleImpl.java:361)
at java.lang.invoke.MethodHandleImpl.castReference(MethodHandleImpl.java:356)
at com.redhat.ceylon.compiler.java.runtime.metamodel.ConstructorDispatch.$call$(ConstructorDispatch.java:612)
at com.redhat.ceylon.compiler.java.Util.apply(Util.java:1634)
at com.redhat.ceylon.compiler.java.runtime.metamodel.Metamodel.apply(Metamodel.java:1891)
at com.redhat.ceylon.compiler.java.runtime.metamodel.ConstructorDispatch.apply(ConstructorDispatch.java:762)
at com.redhat.ceylon.compiler.java.runtime.metamodel.meta.ClassImpl.apply(ClassImpl.java:410)
at com.redhat.ceylon.compiler.java.runtime.metamodel.meta.ClassInitializerConstructor.apply(ClassInitializerConstructor.java:81)
at com.redhat.ceylon.compiler.java.runtime.metamodel.decl.ClassWithInitializerDeclarationConstructor.invoke(ClassWithInitializerDeclarationConstructor.java:225)
at test.sample14.foo_.foo(run.ceylon:34)
at test.sample14.foo_.main(run.ceylon)
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 ceylon.modules.api.runtime.SecurityActions.invokeRunInternal(SecurityActions.java:57)
at ceylon.modules.api.runtime.SecurityActions.invokeRun(SecurityActions.java:48)
at ceylon.modules.api.runtime.AbstractRuntime.invokeRun(AbstractRuntime.java:68)
at ceylon.modules.api.runtime.AbstractRuntime.execute(AbstractRuntime.java:105)
at ceylon.modules.api.runtime.AbstractRuntime.execute(AbstractRuntime.java:101)
at ceylon.modules.Main.execute(Main.java:69)
at ceylon.modules.Main.main(Main.java:42)
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.jboss.modules.Module.run(Module.java:308)
at org.jboss.modules.Main.main(Main.java:487)
at ceylon.modules.bootstrap.CeylonRunTool.run(CeylonRunTool.java:367)
at com.redhat.ceylon.common.tools.CeylonTool.run(CeylonTool.java:547)
at com.redhat.ceylon.common.tools.CeylonTool.execute(CeylonTool.java:423)
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 com.redhat.ceylon.launcher.Launcher.runInJava7Checked(Launcher.java:108)
at com.redhat.ceylon.launcher.Launcher.run(Launcher.java:38)
at com.redhat.ceylon.launcher.Launcher.run(Launcher.java:31)
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 com.redhat.ceylon.launcher.Bootstrap.runVersion(Bootstrap.java:162)
at com.redhat.ceylon.launcher.Bootstrap.runInternal(Bootstrap.java:117)
at com.redhat.ceylon.launcher.Bootstrap.run(Bootstrap.java:93)
problem disapears when you remove serializable
annotation
gavinking commented
Fixed, thanks.