From f43626d54575d64344315bc948a4191238545331 Mon Sep 17 00:00:00 2001 From: Dmitriy Dolovov Date: Thu, 4 Mar 2021 12:34:54 +0300 Subject: [PATCH] [Commonizer] Drop no more necessary logic for forward declarations --- .../descriptors/commonizer/TargetProvider.kt | 6 +---- .../commonizer/core/TypeCommonizer.kt | 6 ++--- .../kotlin/descriptors/commonizer/facade.kt | 1 - .../NativeDistributionModulesProvider.kt | 11 +++----- .../mergedtree/CirKnownClassifiers.kt | 25 ------------------- .../CirProvidedClassifiersByModules.kt | 2 +- .../commonizer/mergedtree/CirTreeMerger.kt | 21 +--------------- .../commonizer/core/TypeCommonizerTest.kt | 1 - .../descriptors/commonizer/utils/mocks.kt | 6 +---- 9 files changed, 9 insertions(+), 70 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 c72d574f8e8..cb877289db1 100644 --- a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/TargetProvider.kt +++ b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/TargetProvider.kt @@ -18,11 +18,7 @@ interface ModulesProvider { open class ModuleInfo( val name: String, val originalLocation: File, - val cInteropAttributes: CInteropModuleAttributes? - ) - - class CInteropModuleAttributes( - val exportForwardDeclarations: Collection + val isCInterop: Boolean ) /** diff --git a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/core/TypeCommonizer.kt b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/core/TypeCommonizer.kt index 124a91442cb..f50e2a97e72 100644 --- a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/core/TypeCommonizer.kt +++ b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/core/TypeCommonizer.kt @@ -202,10 +202,8 @@ private fun commonizeClass(classId: CirEntityId, classifiers: CirKnownClassifier return when (val node = classifiers.commonizedNodes.classNode(classId)) { null -> { - // No node means that the class was not subject for commonization. - // - Either it is missing in certain targets at all => not commonized. - // - Or it is a known forward declaration => consider it as commonized. - classifiers.forwardDeclarations.isExportedForwardDeclaration(classId) + // No node means that the type alias was not subject for commonization. It is missing in some target(s) => not commonized. + false } else -> { // Common declaration in node is not null -> successfully commonized. diff --git a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/facade.kt b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/facade.kt index ad68773eeda..0460cb18461 100644 --- a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/facade.kt +++ b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/facade.kt @@ -40,7 +40,6 @@ private fun mergeAndCommonize(storageManager: StorageManager, parameters: Common // build merged tree: val classifiers = CirKnownClassifiers( commonizedNodes = CirCommonizedClassifierNodes.default(), - forwardDeclarations = CirForwardDeclarations.default(), commonDependencies = CirProvidedClassifiers.of( CirFictitiousFunctionClassifiers, CirProvidedClassifiers.by(parameters.dependencyModulesProvider) 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 7d83ad393ab..b7b6385ccc2 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 @@ -6,7 +6,6 @@ package org.jetbrains.kotlin.descriptors.commonizer.konan import org.jetbrains.kotlin.descriptors.commonizer.ModulesProvider -import org.jetbrains.kotlin.descriptors.commonizer.ModulesProvider.CInteropModuleAttributes import org.jetbrains.kotlin.descriptors.commonizer.ModulesProvider.ModuleInfo import org.jetbrains.kotlin.konan.library.KONAN_STDLIB_NAME import org.jetbrains.kotlin.library.SerializedMetadata @@ -18,8 +17,8 @@ internal class NativeDistributionModulesProvider(libraries: Collection, - cInteropAttributes: CInteropModuleAttributes? - ) : ModuleInfo(name, originalLocation, cInteropAttributes) + isCInterop: Boolean + ) : ModuleInfo(name, originalLocation, isCInterop) private val libraryMap: Map private val moduleInfoMap: Map @@ -35,12 +34,8 @@ internal class NativeDistributionModulesProvider(libraries: Collection() - - override fun isExportedForwardDeclaration(classId: CirEntityId) = classId in exportedForwardDeclarations - - override fun addExportedForwardDeclaration(classId: CirEntityId) { - check(classId.packageName.isUnderKotlinNativeSyntheticPackages) - exportedForwardDeclarations += classId - } - } - } -} \ No newline at end of file diff --git a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/mergedtree/CirProvidedClassifiersByModules.kt b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/mergedtree/CirProvidedClassifiersByModules.kt index fd1c64b78d9..4c26039f415 100644 --- a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/mergedtree/CirProvidedClassifiersByModules.kt +++ b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/mergedtree/CirProvidedClassifiersByModules.kt @@ -47,7 +47,7 @@ internal class CirProvidedClassifiersByModules private constructor( var hasForwardDeclarations = false modulesProvider.loadModuleInfos().forEach { moduleInfo -> - if (moduleInfo.cInteropAttributes != null) { + if (moduleInfo.isCInterop) { // this is a C-interop module hasForwardDeclarations = true } 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 210d6c2b9b9..68997590f01 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 @@ -88,9 +88,6 @@ class CirTreeMerger( private fun processRoot(): CirTreeMergeResult { val rootNode: CirRootNode = buildRootNode(storageManager, leafTargetsSize) - // remember any exported forward declarations from common fragments of dependee modules - parameters.dependencyModulesProvider?.loadModuleInfos()?.forEach(::processCInteropModuleAttributes) - val commonModuleNames = parameters.getCommonModuleNames() val missingModuleInfosByTargets = mutableMapOf>() @@ -138,18 +135,15 @@ class CirTreeMerger( commonModuleInfos.forEach { moduleInfo -> val metadata = targetProvider.modulesProvider.loadModuleMetadata(moduleInfo.name) val module = KlibModuleMetadata.read(SerializedMetadataLibraryProvider(metadata)) - processModule(context, rootNode, moduleInfo, module) + processModule(context, rootNode, module) } } private fun processModule( context: CirTreeMergingContext, rootNode: CirRootNode, - moduleInfo: ModuleInfo, module: KlibModuleMetadata ) { - processCInteropModuleAttributes(moduleInfo) - val moduleName: CirName = CirName.create(module.name) val moduleNode: CirModuleNode = rootNode.modules.getOrPut(moduleName) { buildModuleNode(storageManager, leafTargetsSize) @@ -345,19 +339,6 @@ class CirTreeMerger( typeResolver = context.typeResolver ) } - - private fun processCInteropModuleAttributes(moduleInfo: ModuleInfo) { - val cInteropAttributes = moduleInfo.cInteropAttributes ?: return - val exportForwardDeclarations = cInteropAttributes.exportForwardDeclarations.takeIf { it.isNotEmpty() } ?: return - - 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(packageName, className)) - } - } } private class ClassesToProcess { diff --git a/native/commonizer/tests/org/jetbrains/kotlin/descriptors/commonizer/core/TypeCommonizerTest.kt b/native/commonizer/tests/org/jetbrains/kotlin/descriptors/commonizer/core/TypeCommonizerTest.kt index 4f60dea58b5..e708219382d 100644 --- a/native/commonizer/tests/org/jetbrains/kotlin/descriptors/commonizer/core/TypeCommonizerTest.kt +++ b/native/commonizer/tests/org/jetbrains/kotlin/descriptors/commonizer/core/TypeCommonizerTest.kt @@ -28,7 +28,6 @@ class TypeCommonizerTest : AbstractCommonizerTest() { // reset cache classifiers = CirKnownClassifiers( commonizedNodes = CirCommonizedClassifierNodes.default(), - forwardDeclarations = CirForwardDeclarations.default(), commonDependencies = object : CirProvidedClassifiers { override fun hasClassifier(classifierId: CirEntityId) = classifierId.packageName.isUnderStandardKotlinPackages override fun classifier(classifierId: CirEntityId) = error("This method should not be called") diff --git a/native/commonizer/tests/org/jetbrains/kotlin/descriptors/commonizer/utils/mocks.kt b/native/commonizer/tests/org/jetbrains/kotlin/descriptors/commonizer/utils/mocks.kt index 34964e12e63..22556276776 100644 --- a/native/commonizer/tests/org/jetbrains/kotlin/descriptors/commonizer/utils/mocks.kt +++ b/native/commonizer/tests/org/jetbrains/kotlin/descriptors/commonizer/utils/mocks.kt @@ -78,10 +78,6 @@ internal val MOCK_CLASSIFIERS = CirKnownClassifiers( override fun addClassNode(classId: CirEntityId, node: CirClassNode) = error("This method should not be called") override fun addTypeAliasNode(typeAliasId: CirEntityId, node: CirTypeAliasNode) = error("This method should not be called") }, - forwardDeclarations = object : CirForwardDeclarations { - override fun isExportedForwardDeclaration(classId: CirEntityId) = false - override fun addExportedForwardDeclaration(classId: CirEntityId) = error("This method should not be called") - }, commonDependencies = CirProvidedClassifiers.EMPTY ) @@ -97,7 +93,7 @@ internal class MockModulesProvider private constructor( return SERIALIZER.serializeModule(module) } - private fun fakeModuleInfo(name: String) = ModuleInfo(name, File("/tmp/commonizer/mocks/$name"), null) + private fun fakeModuleInfo(name: String) = ModuleInfo(name, File("/tmp/commonizer/mocks/$name"), false) companion object { @JvmName("createByModuleNames")