From 79e3ce022f0af71dea86875a740a5d3a929fdf17 Mon Sep 17 00:00:00 2001 From: Dmitriy Dolovov Date: Wed, 17 Feb 2021 18:13:18 +0300 Subject: [PATCH] [Commonizer] Fix: Keep fwd declarations under real names in CirForwardDeclarations cache --- .../kotlin/descriptors/commonizer/TargetProvider.kt | 1 - .../commonizer/konan/NativeDistributionModulesProvider.kt | 6 +----- .../descriptors/commonizer/mergedtree/CirTreeMerger.kt | 5 +++-- .../commonizer/mergedtree/classifierContainers.kt | 2 +- 4 files changed, 5 insertions(+), 9 deletions(-) diff --git a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/TargetProvider.kt b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/TargetProvider.kt index 1a4343fd6d3..7ae25ddf463 100644 --- a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/TargetProvider.kt +++ b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/TargetProvider.kt @@ -23,7 +23,6 @@ interface ModulesProvider { ) class CInteropModuleAttributes( - val mainPackageFqName: String, val exportForwardDeclarations: Collection ) diff --git a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/konan/NativeDistributionModulesProvider.kt b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/konan/NativeDistributionModulesProvider.kt index d977bb4c702..e7dfdc1833e 100644 --- a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/konan/NativeDistributionModulesProvider.kt +++ b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/konan/NativeDistributionModulesProvider.kt @@ -45,11 +45,7 @@ internal abstract class NativeDistributionModulesProvider(libraries: Collection< val dependencies = manifestData.dependencies.toSet() val cInteropAttributes = if (manifestData.isInterop) { - val packageFqName = manifestData.packageFqName - ?: manifestData.shortName?.let { "platform.$it" } - ?: manifestData.uniqueName.substringAfter("platform.").let { "platform.$it" } - - CInteropModuleAttributes(packageFqName, manifestData.exportForwardDeclarations) + CInteropModuleAttributes(manifestData.exportForwardDeclarations) } else null libraryMap.put(name, library)?.let { error("Duplicated libraries: $name") } diff --git a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/mergedtree/CirTreeMerger.kt b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/mergedtree/CirTreeMerger.kt index 27cbc668f33..3d93cb64564 100644 --- a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/mergedtree/CirTreeMerger.kt +++ b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/mergedtree/CirTreeMerger.kt @@ -253,12 +253,13 @@ class CirTreeMerger( private fun processCInteropModuleAttributes(moduleInfo: ModuleInfo) { val cInteropAttributes = moduleInfo.cInteropAttributes ?: return val exportForwardDeclarations = cInteropAttributes.exportForwardDeclarations.takeIf { it.isNotEmpty() } ?: return - val mainPackageFqName = CirPackageName.create(cInteropAttributes.mainPackageFqName) exportForwardDeclarations.forEach { classFqName -> // Class has synthetic package FQ name (cnames/objcnames). Need to transfer it to the main package. + val packageName = CirPackageName.create(classFqName.substringBeforeLast('.', missingDelimiterValue = "")) val className = CirName.create(classFqName.substringAfterLast('.')) - classifiers.forwardDeclarations.addExportedForwardDeclaration(CirEntityId.create(mainPackageFqName, className)) + + classifiers.forwardDeclarations.addExportedForwardDeclaration(CirEntityId.create(packageName, className)) } } } diff --git a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/mergedtree/classifierContainers.kt b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/mergedtree/classifierContainers.kt index 0f386bee1ea..0f2624405ea 100644 --- a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/mergedtree/classifierContainers.kt +++ b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/mergedtree/classifierContainers.kt @@ -72,7 +72,7 @@ interface CirForwardDeclarations { override fun isExportedForwardDeclaration(classId: CirEntityId) = classId in exportedForwardDeclarations override fun addExportedForwardDeclaration(classId: CirEntityId) { - check(!classId.packageName.isUnderKotlinNativeSyntheticPackages) + check(classId.packageName.isUnderKotlinNativeSyntheticPackages) exportedForwardDeclarations += classId } }