diff --git a/java/kotlin-extractor/src/main/kotlin/KotlinUsesExtractor.kt b/java/kotlin-extractor/src/main/kotlin/KotlinUsesExtractor.kt index ffadd6969a2..11cf7d11de4 100644 --- a/java/kotlin-extractor/src/main/kotlin/KotlinUsesExtractor.kt +++ b/java/kotlin-extractor/src/main/kotlin/KotlinUsesExtractor.kt @@ -1277,10 +1277,7 @@ open class KotlinUsesExtractor( javaClass.declarations.findSubType { 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. 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 { decl -> diff --git a/java/ql/test/kotlin/library-tests/java-map-methods/test.kt b/java/ql/test/kotlin/library-tests/java-map-methods/test.kt index 0edaadff5a1..8f1a6ec0362 100644 --- a/java/ql/test/kotlin/library-tests/java-map-methods/test.kt +++ b/java/ql/test/kotlin/library-tests/java-map-methods/test.kt @@ -1,3 +1,7 @@ fun test(m: Map) = m.getOrDefault(1, 2) fun test2(s: String) = s.length + +fun remove(l: MutableList) { + l.remove(5) +}