From 5c36e63dfe3fa2c582495d458f0201f5a408860a Mon Sep 17 00:00:00 2001 From: Ian Lynagh Date: Tue, 31 Oct 2023 13:54:37 +0000 Subject: [PATCH] Kotlin: Fix findTopLevelFunctionOrWarn for Kotlin 2 The AST when the parent class is a file class is different in Kotlin 2 mode. --- .../src/main/kotlin/KotlinFileExtractor.kt | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/java/kotlin-extractor/src/main/kotlin/KotlinFileExtractor.kt b/java/kotlin-extractor/src/main/kotlin/KotlinFileExtractor.kt index 0bfccb5637e7..500d314aea17 100644 --- a/java/kotlin-extractor/src/main/kotlin/KotlinFileExtractor.kt +++ b/java/kotlin-extractor/src/main/kotlin/KotlinFileExtractor.kt @@ -2457,8 +2457,12 @@ open class KotlinFileExtractor( val fn = getFunctionsByFqName(pluginContext, functionPkg, functionName) .firstOrNull { fnSymbol -> - fnSymbol.owner.parentClassOrNull?.fqNameWhenAvailable?.asString() == type && - fnSymbol.owner.valueParameters.map { it.type.classFqName?.asString() }.toTypedArray() contentEquals parameterTypes + val owner = fnSymbol.owner + (owner.parentClassOrNull?.fqNameWhenAvailable?.asString() == type + || + (owner.parent is IrExternalPackageFragment && getFileClassFqName(owner)?.asString() == type)) + && + owner.valueParameters.map { it.type.classFqName?.asString() }.toTypedArray() contentEquals parameterTypes }?.owner if (fn != null) {