Kotlin: find java-kotlin equivalent functions by erased parameter types

This commit is contained in:
Tamas Vajk
2022-09-29 14:09:16 +02:00
parent 64c953bee0
commit b79c10c419
2 changed files with 1 additions and 5 deletions

View File

@@ -1277,10 +1277,7 @@ open class KotlinUsesExtractor(
javaClass.declarations.findSubType<IrFunction> { decl ->
decl.name.asString() == jvmName &&
decl.valueParameters.size == f.valueParameters.size &&
// Note matching by classifier not the whole type so that generic arguments are allowed to differ,
// as they always will for method type parameters occurring in parameter types (e.g. <T> toArray(T[] array)
// Differing only by nullability would also be insignificant if it came up.
decl.valueParameters.zip(f.valueParameters).all { p -> p.first.type.classifierOrNull == p.second.type.classifierOrNull }
decl.valueParameters.zip(f.valueParameters).all { p -> erase(p.first.type) == erase(p.second.type) }
} ?:
// Or if there is none, look for the only viable overload
javaClass.declarations.singleOrNullSubType<IrFunction> { decl ->