diff --git a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/mergedtree/memberScopes.kt b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/mergedtree/memberScopes.kt index 28d26d1e5c0..ef5f2a1bc98 100644 --- a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/mergedtree/memberScopes.kt +++ b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/mergedtree/memberScopes.kt @@ -9,6 +9,7 @@ import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.descriptors.commonizer.core.Commonizer import org.jetbrains.kotlin.descriptors.commonizer.utils.fqNameWithTypeParameters import org.jetbrains.kotlin.descriptors.commonizer.utils.isBlacklistedDarwinFunction +import org.jetbrains.kotlin.descriptors.commonizer.utils.isDeprecated import org.jetbrains.kotlin.descriptors.commonizer.utils.isKniBridgeFunction import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.resolve.scopes.MemberScope @@ -53,8 +54,13 @@ internal inline fun PropertyCollector( internal inline fun FunctionCollector( crossinline typedCollector: (SimpleFunctionDescriptor) -> Unit ): (DeclarationDescriptor) -> Boolean = Collector { candidate -> - if (candidate.kind.isReal && !candidate.isKniBridgeFunction() && !candidate.isBlacklistedDarwinFunction()) + if (candidate.kind.isReal + && !candidate.isKniBridgeFunction() + && !candidate.isDeprecated() + && !candidate.isBlacklistedDarwinFunction() + ) { typedCollector(candidate) + } } /** Used for approximation of [PropertyDescriptor]s before running concrete [Commonizer]s */ diff --git a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/utils/blacklist.kt b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/utils/blacklist.kt index fb5fc485d8c..c089090d4e2 100644 --- a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/utils/blacklist.kt +++ b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/utils/blacklist.kt @@ -15,6 +15,9 @@ private val DEPRECATED_ANNOTATION_FQN = FqName(Deprecated::class.java.name) internal fun SimpleFunctionDescriptor.isKniBridgeFunction() = name.asString().startsWith("kniBridge") +internal fun SimpleFunctionDescriptor.isDeprecated() = + annotations.hasAnnotation(DEPRECATED_ANNOTATION_FQN) + // the following logic determines Kotlin functions with conflicting overloads in Darwin library: internal fun SimpleFunctionDescriptor.isBlacklistedDarwinFunction(): Boolean { if ((containingDeclaration as? PackageFragmentDescriptor)?.fqName?.isUnderDarwinPackage != true) @@ -24,9 +27,6 @@ internal fun SimpleFunctionDescriptor.isBlacklistedDarwinFunction(): Boolean { if (!name.startsWith("simd_") && !name.startsWith("__")) return false - if (annotations.hasAnnotation(DEPRECATED_ANNOTATION_FQN)) - return true - return valueParameters.any { parameter -> val type = parameter.type val abbreviationType = type.getAbbreviation() diff --git a/native/commonizer/testData/functionCommonization/specifics/original/js/package_root.kt b/native/commonizer/testData/functionCommonization/specifics/original/js/package_root.kt index c3f22b47b56..b7be16676e1 100644 --- a/native/commonizer/testData/functionCommonization/specifics/original/js/package_root.kt +++ b/native/commonizer/testData/functionCommonization/specifics/original/js/package_root.kt @@ -17,3 +17,8 @@ external fun externalFunction2() inline fun inlineFunction1() {} inline fun inlineFunction2() {} + +@Deprecated +fun deprecatedFunction1() {} +@Deprecated +fun deprecatedFunction2() {} diff --git a/native/commonizer/testData/functionCommonization/specifics/original/jvm/package_root.kt b/native/commonizer/testData/functionCommonization/specifics/original/jvm/package_root.kt index 59b0f9d204c..58f31ed2baf 100644 --- a/native/commonizer/testData/functionCommonization/specifics/original/jvm/package_root.kt +++ b/native/commonizer/testData/functionCommonization/specifics/original/jvm/package_root.kt @@ -17,3 +17,8 @@ fun externalFunction2() {} inline fun inlineFunction1() {} fun inlineFunction2() {} + +@Deprecated +fun deprecatedFunction1() {} +@Deprecated +fun deprecatedFunction3() {}