-
Notifications
You must be signed in to change notification settings - Fork 3
Open
Description
In retrofitting an existing js api to generate typescript, some types may use raw generics (as the Java either doesn't know/care what the type is, and didn't use Any/Object/?):
@JsType
public class MyExportedType {
public String getName() {
return null;
}
public void handleData(JsPropertyMap array) {
// Implementation would go here
}
}
causes
Note: Running doclet.
..api/MyExportedType.java:17: error: java.lang.IndexOutOfBoundsException: Index 0 out of bounds for length 0
public class MyExportedType {
^
at java.base/jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:64)
at java.base/jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Preconditions.java:70)
at java.base/jdk.internal.util.Preconditions.checkIndex(Preconditions.java:266)
at java.base/java.util.Objects.checkIndex(Objects.java:361)
at java.base/java.util.ArrayList.get(ArrayList.java:427)
at com.vertispan.tsdefs.impl.builders.JavaToTsTypeConverter.toTsType(JavaToTsTypeConverter.java:122)
at com.vertispan.tsdefs.impl.builders.JavaToTsTypeConverter.toTsType(JavaToTsTypeConverter.java:51)
at com.vertispan.tsdefs.impl.builders.TsElement.getElementTsType(TsElement.java:314)
at com.vertispan.tsdefs.impl.builders.TsElement.getType(TsElement.java:282)
at com.vertispan.tsdefs.impl.visitors.ParameterVisitor.visit(ParameterVisitor.java:74)
at com.vertispan.tsdefs.impl.visitors.ClassMethodVisitor.lambda$visit$0(ClassMethodVisitor.java:68)
at java.base/java.lang.Iterable.forEach(Iterable.java:75)
at com.vertispan.tsdefs.impl.visitors.ClassMethodVisitor.visit(ClassMethodVisitor.java:67)
at com.vertispan.tsdefs.impl.visitors.ClassTypeVisitor.visit(ClassTypeVisitor.java:154)
at com.vertispan.tsdefs.impl.visitors.ClassTypeVisitor.lambda$visit$2(ClassTypeVisitor.java:59)
at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179)
at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
at java.base/java.util.Iterator.forEachRemaining(Iterator.java:133)
at java.base/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1845)
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)
at com.vertispan.tsdefs.impl.visitors.ClassTypeVisitor.visit(ClassTypeVisitor.java:59)
at com.vertispan.tsdefs.impl.visitors.TypeVisitor.visit(TypeVisitor.java:46)
at com.vertispan.tsdefs.doclet.TsDoclet.lambda$run$13(TsDoclet.java:168)
at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179)
at java.base/java.util.HashMap$KeySpliterator.forEachRemaining(HashMap.java:1707)
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)
at com.vertispan.tsdefs.doclet.TsDoclet.run(TsDoclet.java:165)
at jdk.javadoc/jdk.javadoc.internal.tool.Start.parseAndExecute(Start.java:556)
at jdk.javadoc/jdk.javadoc.internal.tool.Start.begin(Start.java:393)
at jdk.javadoc/jdk.javadoc.internal.tool.Start.begin(Start.java:342)
at jdk.javadoc/jdk.javadoc.internal.tool.Main.execute(Main.java:63)
at jdk.javadoc/jdk.javadoc.internal.tool.Main.main(Main.java:52)
error: java.lang.RuntimeException: java.lang.IndexOutOfBoundsException: Index 0 out of bounds for length 0
at com.vertispan.tsdefs.doclet.TsDoclet.lambda$run$13(TsDoclet.java:173)
at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179)
at java.base/java.util.HashMap$KeySpliterator.forEachRemaining(HashMap.java:1707)
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)
at com.vertispan.tsdefs.doclet.TsDoclet.run(TsDoclet.java:165)
at jdk.javadoc/jdk.javadoc.internal.tool.Start.parseAndExecute(Start.java:556)
at jdk.javadoc/jdk.javadoc.internal.tool.Start.begin(Start.java:393)
at jdk.javadoc/jdk.javadoc.internal.tool.Start.begin(Start.java:342)
at jdk.javadoc/jdk.javadoc.internal.tool.Main.execute(Main.java:63)
at jdk.javadoc/jdk.javadoc.internal.tool.Main.main(Main.java:52)
Caused by: java.lang.IndexOutOfBoundsException: Index 0 out of bounds for length 0
at java.base/jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:64)
at java.base/jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Preconditions.java:70)
at java.base/jdk.internal.util.Preconditions.checkIndex(Preconditions.java:266)
at java.base/java.util.Objects.checkIndex(Objects.java:361)
at java.base/java.util.ArrayList.get(ArrayList.java:427)
at com.vertispan.tsdefs.impl.builders.JavaToTsTypeConverter.toTsType(JavaToTsTypeConverter.java:122)
at com.vertispan.tsdefs.impl.builders.JavaToTsTypeConverter.toTsType(JavaToTsTypeConverter.java:51)
at com.vertispan.tsdefs.impl.builders.TsElement.getElementTsType(TsElement.java:314)
at com.vertispan.tsdefs.impl.builders.TsElement.getType(TsElement.java:282)
at com.vertispan.tsdefs.impl.visitors.ParameterVisitor.visit(ParameterVisitor.java:74)
at com.vertispan.tsdefs.impl.visitors.ClassMethodVisitor.lambda$visit$0(ClassMethodVisitor.java:68)
at java.base/java.lang.Iterable.forEach(Iterable.java:75)
at com.vertispan.tsdefs.impl.visitors.ClassMethodVisitor.visit(ClassMethodVisitor.java:67)
at com.vertispan.tsdefs.impl.visitors.ClassTypeVisitor.visit(ClassTypeVisitor.java:154)
at com.vertispan.tsdefs.impl.visitors.ClassTypeVisitor.lambda$visit$2(ClassTypeVisitor.java:59)
at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179)
at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
at java.base/java.util.Iterator.forEachRemaining(Iterator.java:133)
at java.base/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1845)
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)
at com.vertispan.tsdefs.impl.visitors.ClassTypeVisitor.visit(ClassTypeVisitor.java:59)
at com.vertispan.tsdefs.impl.visitors.TypeVisitor.visit(TypeVisitor.java:46)
at com.vertispan.tsdefs.doclet.TsDoclet.lambda$run$13(TsDoclet.java:168)
... 15 more
In addition to the hard to read stack trace, the error message at the top points only to the class where the error occurred, not the method or the param where it was wrong.
I've also seen this for JsArray, but can't reproduce it right now - the same toTsType() method had an exception in the else that handles arrays.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels