Closed traceyyoshima closed 5 months ago
I saw a similar StringIndexOutOfBoundsException
from this test
@Test
void scalaImport() {
rewriteRun(
kotlin(
"""
import my.org.`x$`
fun main() {
}
"""
)
);
}
Caused by: java.lang.StringIndexOutOfBoundsException: begin 1, end 0, length 1
at java.base/java.lang.String.checkBoundsBeginEnd(String.java:4606)
at java.base/java.lang.String.substring(String.java:2709)
at org.openrewrite.java.tree.TypeTree.build(TypeTree.java:77)
at org.openrewrite.kotlin.internal.KotlinTreeParserVisitor.visitImportDirective(KotlinTreeParserVisitor.java:2540)
at org.openrewrite.kotlin.internal.KotlinTreeParserVisitor.visitImportDirective(KotlinTreeParserVisitor.java:75)
at org.jetbrains.kotlin.psi.KtImportDirective.accept(KtImportDirective.java:45)
at org.openrewrite.kotlin.internal.KotlinTreeParserVisitor.visitKtFile(KotlinTreeParserVisitor.java:1676)
at org.openrewrite.kotlin.internal.KotlinTreeParserVisitor.parse(KotlinTreeParserVisitor.java:110)
at org.openrewrite.kotlin.KotlinParser.lambda$parseInputs$4(KotlinParser.java:187)
... 18 more
maybe this is related to https://github.com/openrewrite/rewrite-kotlin/issues/559
The problematic code in hypercube1024/firefly are some import statements (like https://github.com/hypercube1024/firefly/blob/628cfb219a48bdfa104c180d3f96a4690ec46ca4/firefly-example/src/main/kotlin/com/fireflysource/example/HttpServerPathParamDemo.kt#L3):
import com.fireflysource.`$`
This is in fact the same as in
import my.org.`x$`
The issue is that $
is being used as one of the delimiters when scanning the string: https://github.com/openrewrite/rewrite/blob/bee6f7634f5d5f5bdca0fa500009666cd8e5f50d/rewrite-java/src/main/java/org/openrewrite/java/tree/TypeTree.java#L39
There is no information in the parse error result, this occurs on hypercube1024/firefly