From 76d93b6dca998d73d27f7bdea348949c3217e5f0 Mon Sep 17 00:00:00 2001 From: Dmitriy Dolovov Date: Tue, 9 Mar 2021 21:52:30 +0300 Subject: [PATCH] [Commonizer] Read exported forward declarations for every C-interop module --- .../kotlin/descriptors/commonizer/TargetProvider.kt | 7 ++++++- .../konan/NativeDistributionModulesProvider.kt | 11 ++++++++--- .../mergedtree/CirProvidedClassifiersByModules.kt | 4 ++-- .../kotlin/descriptors/commonizer/utils/mocks.kt | 2 +- 4 files changed, 17 insertions(+), 7 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 cb877289db1..07470f50c74 100644 --- a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/TargetProvider.kt +++ b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/TargetProvider.kt @@ -18,7 +18,12 @@ interface ModulesProvider { open class ModuleInfo( val name: String, val originalLocation: File, - val isCInterop: Boolean + val cInteropAttributes: CInteropModuleAttributes? + ) + + class CInteropModuleAttributes( + val mainPackage: String, + val exportedForwardDeclarations: 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 b7b6385ccc2..51e76d1e079 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 @@ -17,8 +17,8 @@ internal class NativeDistributionModulesProvider(libraries: Collection, - isCInterop: Boolean - ) : ModuleInfo(name, originalLocation, isCInterop) + cInteropAttributes: ModulesProvider.CInteropModuleAttributes? + ) : ModuleInfo(name, originalLocation, cInteropAttributes) private val libraryMap: Map private val moduleInfoMap: Map @@ -34,8 +34,13 @@ internal class NativeDistributionModulesProvider(libraries: Collection - if (moduleInfo.isCInterop) { + if (moduleInfo.cInteropAttributes != null) { // this is a C-interop module hasForwardDeclarations = true } @@ -137,7 +137,7 @@ private fun readClass( typeParameterIndexOffset = typeParameterIndexOffset ) val visibility = ProtoEnumFlags.visibility(Flags.VISIBILITY.get(classProto.flags)) - val clazz = CirProvided.Class(typeParameters, visibility) + val clazz = CirProvided.RegularClass(typeParameters, visibility) consumer(classId, clazz) 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 bad5a9b7d22..1272295519c 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 @@ -91,7 +91,7 @@ internal class MockModulesProvider private constructor( return SERIALIZER.serializeModule(module) } - private fun fakeModuleInfo(name: String) = ModuleInfo(name, File("/tmp/commonizer/mocks/$name"), false) + private fun fakeModuleInfo(name: String) = ModuleInfo(name, File("/tmp/commonizer/mocks/$name"), null) companion object { @JvmName("createByModuleNames")