Closed knutwannheden closed 5 months ago
Currently, the following test
@Test void callWithDefaultedGenericParameters() { rewriteRun( kotlin( """ internal data class Foo<T : Any>(val i: T, val j: T) { fun f() { return copy(i = 42) } } """ ) ); }
provokes the following exception:
java.lang.IndexOutOfBoundsException: Index: 1, Size: 1 java.base/java.util.Collections$SingletonList.get(Collections.java:4961) org.openrewrite.kotlin.KotlinTypeMapping.methodInvocationType(KotlinTypeMapping.kt:799) org.openrewrite.kotlin.KotlinTypeMapping.methodInvocationType(KotlinTypeMapping.kt:677) org.openrewrite.kotlin.internal.PsiElementAssociations.methodInvocationType(PsiElementAssociations.kt:233) org.openrewrite.kotlin.internal.KotlinTreeParserVisitor.methodInvocationType(KotlinTreeParserVisitor.java:3635) org.openrewrite.kotlin.internal.KotlinTreeParserVisitor.visitCallExpression(KotlinTreeParserVisitor.java:2048) org.openrewrite.kotlin.internal.KotlinTreeParserVisitor.visitCallExpression(KotlinTreeParserVisitor.java:74) org.jetbrains.kotlin.psi.KtCallExpression.accept(KtCallExpression.java:35) org.openrewrite.kotlin.internal.KotlinTreeParserVisitor.visitReturnExpression(KotlinTreeParserVisitor.java:1130) org.openrewrite.kotlin.internal.KotlinTreeParserVisitor.visitReturnExpression(KotlinTreeParserVisitor.java:74) org.jetbrains.kotlin.psi.KtReturnExpression.accept(KtReturnExpression.java:33) org.openrewrite.kotlin.internal.KotlinTreeParserVisitor.visitBlockExpression(KotlinTreeParserVisitor.java:1948) org.openrewrite.kotlin.internal.KotlinTreeParserVisitor.visitBlockExpression(KotlinTreeParserVisitor.java:74) org.jetbrains.kotlin.psi.KtBlockExpression.accept(KtBlockExpression.java:79) org.openrewrite.kotlin.internal.KotlinTreeParserVisitor.visitNamedFunction0(KotlinTreeParserVisitor.java:2704) org.openrewrite.kotlin.internal.KotlinTreeParserVisitor.visitNamedFunction(KotlinTreeParserVisitor.java:2593) ...
The problematic code is the following else if: https://github.com/openrewrite/rewrite-kotlin/blob/301e3718aa3a7237dff0209ed7c54e159c75bedb/src/main/kotlin/org/openrewrite/kotlin/KotlinTypeMapping.kt#L796-L800
else if
In the call there may not be any argument to match the formal parameter (in the example the call only declares an argument for i but none for j).
i
j
Currently, the following test
provokes the following exception:
The problematic code is the following
else if
: https://github.com/openrewrite/rewrite-kotlin/blob/301e3718aa3a7237dff0209ed7c54e159c75bedb/src/main/kotlin/org/openrewrite/kotlin/KotlinTypeMapping.kt#L796-L800In the call there may not be any argument to match the formal parameter (in the example the call only declares an argument for
i
but none forj
).