jsweet
jsweet copied to clipboard
java.lang.ClassCastException - fixable by hand?
Throwing on this:
public Pair<Integer, Integer> span() {
return new Pair<Integer, Integer>(new Integer(position), new Integer(position + 1));
}
where position
is a private member.
Pair is this:
public class Pair<T1, T2> implements java.io.Serializable {
private static final long serialVersionUID = 0;
public T1 left;
public T2 right;
public Pair(T1 left, T2 right) {
this.left = left;
this.right = right;
}
...
It seems all the TS has generated; even span()
, where the error occurred, has generated partially:
public span(): se.lth.cs.nlp.nlputils.core.Pair<number, number> {
return <any>(new se.lth.cs.nlp.nlputils.core.Pair<number, number>();
}
It seems I can repair by removing <any>(
, and adding back in position
, though I don't know TS well at all :smile_cat:
Questions:
- Can I get a successful compile w/o this error?
- If not, can I have confidence that everything else is fine, since there are no other errors?
The internal transpiler error in full:
2021-01-21 19:32:57.057 ERROR output:55 - internal transpiler error at /z/aolney/repos/jsweet-quickstart/src/main/java/pennconverter-master/src/se/lth/cs/nlp/nlputils/pstree/TerminalNode.java(65)
dumping transpiler's strack trace:
[JCNewClass] new Pair<Integer, Integer>(new... (/z/aolney/repos/jsweet-quickstart/src/main/java/pennconverter-master/src/se/lth/cs/nlp/nlputils/pstree/TerminalNode.java(65,16))
[JCReturn] return new Pair<Integer, Integ... (/z/aolney/repos/jsweet-quickstart/src/main/java/pennconverter-master/src/se/lth/cs/nlp/nlputils/pstree/TerminalNode.java(65,9))
[JCBlock] {... (/z/aolney/repos/jsweet-quickstart/src/main/java/pennconverter-master/src/se/lth/cs/nlp/nlputils/pstree/TerminalNode.java(64,42))
[JCMethodDecl] public Pair<Integer, Integer> ... (/z/aolney/repos/jsweet-quickstart/src/main/java/pennconverter-master/src/se/lth/cs/nlp/nlputils/pstree/TerminalNode.java(64,5))
[JCClassDecl] public abstract class Terminal... (/z/aolney/repos/jsweet-quickstart/src/main/java/pennconverter-master/src/se/lth/cs/nlp/nlputils/pstree/TerminalNode.java(36,1))
[JCCompilationUnit] package se.lth.cs.nlp.nlputils... (/z/aolney/repos/jsweet-quickstart/src/main/java/pennconverter-master/src/se/lth/cs/nlp/nlputils/pstree/TerminalNode.java(29,1))
java.lang.ClassCastException: class com.sun.tools.javac.code.Symbol$TypeVariableSymbol cannot be cast to class javax.lang.model.element.TypeElement (com.sun.tools.javac.code.Symbol$TypeVariableSymbol is in module jdk.compiler of loader 'app'; javax.lang.model.element.TypeElement is in module java.compiler of loader 'platform')
at org.jsweet.transpiler.Java2TypeScriptTranslator.substituteAssignedExpression(Java2TypeScriptTranslator.java:6592)
at org.jsweet.transpiler.util.AbstractTreePrinter.printArgList(AbstractTreePrinter.java:389)
at org.jsweet.transpiler.util.AbstractTreePrinter.printArgList(AbstractTreePrinter.java:455)
at org.jsweet.transpiler.Java2TypeScriptTranslator.printConstructorArgList(Java2TypeScriptTranslator.java:5135)
at org.jsweet.transpiler.Java2TypeScriptTranslator.printDefaultNewClass(Java2TypeScriptTranslator.java:5077)
at org.jsweet.transpiler.extension.Java2TypeScriptAdapter.substituteNewClass(Java2TypeScriptAdapter.java:1723)
at org.jsweet.transpiler.Java2TypeScriptTranslator.visitNewClass(Java2TypeScriptTranslator.java:5008)
at org.jsweet.transpiler.Java2TypeScriptTranslator.visitNewClass(Java2TypeScriptTranslator.java:150)
at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCNewClass.accept(JCTree.java:1711)
at jdk.compiler/com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:82)
at org.jsweet.transpiler.util.AbstractTreeScanner.scan(AbstractTreeScanner.java:279)
at org.jsweet.transpiler.util.AbstractTreePrinter.print(AbstractTreePrinter.java:155)
at org.jsweet.transpiler.Java2TypeScriptTranslator.substituteAssignedExpression(Java2TypeScriptTranslator.java:6608)
at org.jsweet.transpiler.Java2TypeScriptTranslator.visitReturn(Java2TypeScriptTranslator.java:5472)
at org.jsweet.transpiler.Java2TypeScriptTranslator.visitReturn(Java2TypeScriptTranslator.java:150)
at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCReturn.accept(JCTree.java:1554)
at jdk.compiler/com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:82)
at org.jsweet.transpiler.util.AbstractTreeScanner.scan(AbstractTreeScanner.java:279)
at org.jsweet.transpiler.util.AbstractTreePrinter.print(AbstractTreePrinter.java:155)
at org.jsweet.transpiler.Java2TypeScriptTranslator.printBlockStatement(Java2TypeScriptTranslator.java:3307)
at org.jsweet.transpiler.Java2TypeScriptTranslator.printBlockStatements(Java2TypeScriptTranslator.java:3300)
at org.jsweet.transpiler.Java2TypeScriptTranslator.visitMethod(Java2TypeScriptTranslator.java:2700)
at org.jsweet.transpiler.Java2TypeScriptTranslator.visitMethod(Java2TypeScriptTranslator.java:150)
at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCMethodDecl.accept(JCTree.java:898)
at jdk.compiler/com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:82)
at org.jsweet.transpiler.util.AbstractTreeScanner.scan(AbstractTreeScanner.java:279)
at org.jsweet.transpiler.util.AbstractTreePrinter.print(AbstractTreePrinter.java:155)
at org.jsweet.transpiler.Java2TypeScriptTranslator.visitClass(Java2TypeScriptTranslator.java:1875)
at org.jsweet.transpiler.Java2TypeScriptTranslator.visitClass(Java2TypeScriptTranslator.java:150)
at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCClassDecl.accept(JCTree.java:808)
at jdk.compiler/com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:82)
at org.jsweet.transpiler.util.AbstractTreeScanner.scan(AbstractTreeScanner.java:279)
at org.jsweet.transpiler.util.AbstractTreePrinter.print(AbstractTreePrinter.java:155)
at org.jsweet.transpiler.Java2TypeScriptTranslator.visitCompilationUnit(Java2TypeScriptTranslator.java:923)
at org.jsweet.transpiler.Java2TypeScriptTranslator.visitCompilationUnit(Java2TypeScriptTranslator.java:150)
at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCCompilationUnit.accept(JCTree.java:591)
at jdk.compiler/com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:82)
at org.jsweet.transpiler.util.AbstractTreeScanner.scan(AbstractTreeScanner.java:279)
at org.jsweet.transpiler.util.AbstractTreePrinter.print(AbstractTreePrinter.java:155)
at org.jsweet.transpiler.JSweetTranspiler.generateTsFiles(JSweetTranspiler.java:947)
at org.jsweet.transpiler.JSweetTranspiler.java2ts(JSweetTranspiler.java:898)
at org.jsweet.transpiler.JSweetTranspiler.transpile(JSweetTranspiler.java:821)
at org.jsweet.transpiler.JSweetTranspiler.transpile(JSweetTranspiler.java:779)
at org.jsweet.AbstractJSweetMojo.transpile(AbstractJSweetMojo.java:674)
at org.jsweet.JSweetMojo.execute(JSweetMojo.java:43)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:137)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:210)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:156)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:148)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:117)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:81)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:56)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:305)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:192)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:105)
at org.apache.maven.cli.MavenCli.execute(MavenCli.java:957)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:289)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:193)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:282)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:225)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:406)
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:347)
Solved this particular problem by rewriting this:
public Pair<Integer, Integer> span() {
return new Pair<Integer, Integer>(new Integer(position), new Integer(position + 1));
}
as this:
public Pair<Integer, Integer> span() {
Integer first = new Integer(position);
Integer second = new Integer(position + 1 );
Pair< Integer, Integer> pair = new Pair<Integer, Integer>(first,second);
return pair;
}
Thanks, I will keep it open because it is a bug (quite surprising I have to say).
Great, let me know if I can provide anything else to help you reproduce it.