Open aedeph opened 6 years ago
I can reproduce this on current master; the stack trace is:
org.eclipse.ceylon.model.loader.ParameterNameParserException: Too few parameter types
at org.eclipse.ceylon.model.loader.ParameterNameParser.parseNameList(ParameterNameParser.java:100)
at org.eclipse.ceylon.model.loader.ParameterNameParser.parseMpl(ParameterNameParser.java:79)
at org.eclipse.ceylon.model.loader.AbstractModelLoader.setParameters(AbstractModelLoader.java:4733)
at org.eclipse.ceylon.model.loader.AbstractModelLoader.addMethod(AbstractModelLoader.java:3880)
at org.eclipse.ceylon.model.loader.AbstractModelLoader.complete(AbstractModelLoader.java:3278)
at org.eclipse.ceylon.model.loader.AbstractModelLoader.access$1100(AbstractModelLoader.java:112)
at org.eclipse.ceylon.model.loader.AbstractModelLoader$18.run(AbstractModelLoader.java:2647)
at org.eclipse.ceylon.model.loader.AbstractModelLoader$2.call(AbstractModelLoader.java:439)
at org.eclipse.ceylon.model.loader.AbstractModelLoader$1.call(AbstractModelLoader.java:424)
at org.eclipse.ceylon.model.loader.AbstractModelLoader.embeddingSync(AbstractModelLoader.java:415)
at org.eclipse.ceylon.model.loader.AbstractModelLoader.synchronizedCall(AbstractModelLoader.java:420)
at org.eclipse.ceylon.model.loader.AbstractModelLoader.synchronizedRun(AbstractModelLoader.java:436)
at org.eclipse.ceylon.model.loader.AbstractModelLoader.complete(AbstractModelLoader.java:2643)
at org.eclipse.ceylon.model.loader.model.LazyClass$1.run(LazyClass.java:106)
at org.eclipse.ceylon.model.loader.AbstractModelLoader$2.call(AbstractModelLoader.java:439)
at org.eclipse.ceylon.model.loader.AbstractModelLoader$1.call(AbstractModelLoader.java:424)
at org.eclipse.ceylon.model.loader.AbstractModelLoader.embeddingSync(AbstractModelLoader.java:415)
at org.eclipse.ceylon.model.loader.AbstractModelLoader.synchronizedCall(AbstractModelLoader.java:420)
at org.eclipse.ceylon.model.loader.AbstractModelLoader.synchronizedRun(AbstractModelLoader.java:436)
at org.eclipse.ceylon.model.loader.model.LazyClass.load(LazyClass.java:100)
at org.eclipse.ceylon.model.loader.model.LazyClass.getParameterLists(LazyClass.java:185)
at org.eclipse.ceylon.compiler.java.runtime.metamodel.Metamodel.getTypeDescriptorForArguments(Metamodel.java:1345)
at org.eclipse.ceylon.compiler.java.runtime.metamodel.Metamodel.getAppliedMetamodel(Metamodel.java:666)
at org.eclipse.ceylon.compiler.java.runtime.metamodel.Metamodel.getAppliedMetamodel(Metamodel.java:381)
at ceylon.language.meta.typeLiteral_.typeLiteral(typeLiteral_.java:39)
at tmp.run_.run(run.ceylon:15)
And here’s a simpler reproducer – ceylon.test
not necessary:
class ClassTest() {
Integer stub()(Integer i) => i;
}
shared void run() => print(`ClassTest`);
ceylon test and ceylon run with createTestRunner().run() produces ParameterNameParserException, when there is private method with multiple argument list.
$ ceylon run --compile=force repl
com.redhat.ceylon.model.loader.ParameterNameParserException: Too few parameter types
$ ceylon test repl com.redhat.ceylon.model.loader.ParameterNameParserException: Too few parameter types ...long stack trace..
However, if second argument list is empty (
Integer stub()() => 1
), everything is ok.