[ObjCExport] Avoid making driver internals public.
diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/Machinery.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/Machinery.kt
index 62787c9..38ce0b9 100644
--- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/Machinery.kt
+++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/Machinery.kt
@@ -9,7 +9,6 @@
import org.jetbrains.kotlin.backend.common.LoggingContext
import org.jetbrains.kotlin.backend.common.phaser.*
import org.jetbrains.kotlin.backend.konan.ConfigChecks
-import org.jetbrains.kotlin.backend.konan.InternalKotlinNativeApi
import org.jetbrains.kotlin.backend.konan.KonanConfig
import org.jetbrains.kotlin.backend.konan.getCompilerMessageLocation
import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys
@@ -36,8 +35,7 @@
* * On the other hand, middle- and bitcode phases are hard to decouple due to the way the code was written many years ago.
* It will take some time to rewrite it properly.
*/
-@InternalKotlinNativeApi
-interface PhaseContext : LoggingContext, ConfigChecks, ErrorReportingContext {
+internal interface PhaseContext : LoggingContext, ConfigChecks, ErrorReportingContext {
val messageCollector: MessageCollector
/**
@@ -46,8 +44,7 @@
fun dispose()
}
-@InternalKotlinNativeApi
-open class BasicPhaseContext(
+internal open class BasicPhaseContext(
override val config: KonanConfig,
) : PhaseContext {
override var inVerbosePhase = false
diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/objcexport/ObjCExport.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/objcexport/ObjCExport.kt
index 5f6ab0a..76c38b9 100644
--- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/objcexport/ObjCExport.kt
+++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/objcexport/ObjCExport.kt
@@ -11,14 +11,15 @@
import org.jetbrains.kotlin.backend.konan.llvm.CodeGenerator
import org.jetbrains.kotlin.backend.konan.llvm.objcexport.ObjCExportBlockCodeGenerator
import org.jetbrains.kotlin.backend.konan.llvm.objcexport.ObjCExportCodeGenerator
-import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor
-import org.jetbrains.kotlin.descriptors.ClassDescriptor
-import org.jetbrains.kotlin.descriptors.ModuleDescriptor
-import org.jetbrains.kotlin.descriptors.SourceFile
+import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity
+import org.jetbrains.kotlin.cli.common.messages.MessageUtil
+import org.jetbrains.kotlin.descriptors.*
import org.jetbrains.kotlin.konan.exec.Command
import org.jetbrains.kotlin.konan.file.File
import org.jetbrains.kotlin.konan.file.createTempFile
import org.jetbrains.kotlin.konan.target.CompilerOutputKind
+import org.jetbrains.kotlin.renderer.DescriptorRenderer
+import org.jetbrains.kotlin.resolve.source.getPsi
@InternalKotlinNativeApi
class ObjCExportedInterface(
@@ -53,7 +54,7 @@
val ignoreInterfaceMethodCollisions = config.configuration.getBoolean(BinaryOptions.objcExportIgnoreInterfaceMethodCollisions)
val reportNameCollisions = config.configuration.getBoolean(BinaryOptions.objcExportReportNameCollisions)
- val problemCollector = ObjCExportHeaderGeneratorImpl.ProblemCollector(context)
+ val problemCollector = ObjCExportCompilerProblemCollector(context)
val namer = ObjCExportNamerImpl(
moduleDescriptors.toSet(),
@@ -67,11 +68,36 @@
ignoreInterfaceMethodCollisions = ignoreInterfaceMethodCollisions,
reportNameCollisions = reportNameCollisions,
)
- val headerGenerator = ObjCExportHeaderGeneratorImpl(context, moduleDescriptors, mapper, namer, problemCollector, objcGenerics)
+ val shouldExportKDoc = context.shouldExportKDoc()
+ val additionalImports = context.config.configuration.getNotNull(KonanConfigKeys.FRAMEWORK_IMPORT_HEADERS)
+ val headerGenerator = ObjCExportHeaderGenerator.createInstance(
+ moduleDescriptors, mapper, namer, problemCollector, objcGenerics, shouldExportKDoc = shouldExportKDoc,
+ additionalImports = additionalImports)
headerGenerator.translateModule()
return headerGenerator.buildInterface()
}
+private class ObjCExportCompilerProblemCollector(val context: PhaseContext) : ObjCExportProblemCollector {
+ override fun reportWarning(text: String) {
+ context.reportCompilationWarning(text)
+ }
+
+ override fun reportWarning(declaration: DeclarationDescriptor, text: String) {
+ val psi = (declaration as? DeclarationDescriptorWithSource)?.source?.getPsi()
+ ?: return reportWarning(
+ "$text\n (at ${DescriptorRenderer.COMPACT_WITH_SHORT_TYPES.render(declaration)})"
+ )
+
+ val location = MessageUtil.psiElementToMessageLocation(psi)
+
+ context.messageCollector.report(CompilerMessageSeverity.WARNING, text, location)
+ }
+
+ override fun reportException(throwable: Throwable) {
+ throw throwable
+ }
+}
+
/**
* Populate framework directory with headers, module and info.plist.
*/
diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/objcexport/ObjCExportHeaderGeneratorImpl.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/objcexport/ObjCExportHeaderGeneratorImpl.kt
deleted file mode 100644
index 502de2d..0000000
--- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/objcexport/ObjCExportHeaderGeneratorImpl.kt
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Copyright 2010-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
- * that can be found in the LICENSE file.
- */
-
-package org.jetbrains.kotlin.backend.konan.objcexport
-
-import org.jetbrains.kotlin.backend.konan.InternalKotlinNativeApi
-import org.jetbrains.kotlin.backend.konan.KonanConfigKeys
-import org.jetbrains.kotlin.backend.konan.driver.PhaseContext
-import org.jetbrains.kotlin.backend.konan.reportCompilationWarning
-import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity
-import org.jetbrains.kotlin.cli.common.messages.MessageUtil
-import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
-import org.jetbrains.kotlin.descriptors.DeclarationDescriptorWithSource
-import org.jetbrains.kotlin.descriptors.ModuleDescriptor
-import org.jetbrains.kotlin.renderer.DescriptorRenderer
-import org.jetbrains.kotlin.resolve.source.getPsi
-
-@InternalKotlinNativeApi
-class ObjCExportHeaderGeneratorImpl(
- val context: PhaseContext,
- moduleDescriptors: List<ModuleDescriptor>,
- mapper: ObjCExportMapper,
- namer: ObjCExportNamer,
- problemCollector: ObjCExportProblemCollector,
- objcGenerics: Boolean
-) : ObjCExportHeaderGenerator(moduleDescriptors, mapper, namer, objcGenerics, problemCollector) {
-
- override val shouldExportKDoc = context.shouldExportKDoc()
-
- internal class ProblemCollector(val context: PhaseContext) : ObjCExportProblemCollector {
- override fun reportWarning(text: String) {
- context.reportCompilationWarning(text)
- }
-
- override fun reportWarning(declaration: DeclarationDescriptor, text: String) {
- val psi = (declaration as? DeclarationDescriptorWithSource)?.source?.getPsi()
- ?: return reportWarning(
- "$text\n (at ${DescriptorRenderer.COMPACT_WITH_SHORT_TYPES.render(declaration)})"
- )
-
- val location = MessageUtil.psiElementToMessageLocation(psi)
-
- context.messageCollector.report(CompilerMessageSeverity.WARNING, text, location)
- }
-
- override fun reportException(throwable: Throwable) {
- throw throwable
- }
- }
-
- override fun getAdditionalImports(): List<String> =
- context.config.configuration.getNotNull(KonanConfigKeys.FRAMEWORK_IMPORT_HEADERS)
-}
diff --git a/kotlin-native/objcexport-header-generator/build.gradle.kts b/kotlin-native/objcexport-header-generator/build.gradle.kts
index 6af3bf9..9d6dee8 100644
--- a/kotlin-native/objcexport-header-generator/build.gradle.kts
+++ b/kotlin-native/objcexport-header-generator/build.gradle.kts
@@ -18,7 +18,6 @@
testImplementation(libs.junit.jupiter.api)
testImplementation(libs.junit.jupiter.params)
testImplementation(project(":compiler:tests-common", "tests-jar"))
- testImplementation(project(":kotlin-native:backend.native"))
testRuntimeOnly(libs.junit.jupiter.engine)
}
diff --git a/kotlin-native/objcexport-header-generator/src/main/kotlin/org/jetbrains/kotlin/backend/konan/objcexport/ObjCExportHeaderGenerator.kt b/kotlin-native/objcexport-header-generator/src/main/kotlin/org/jetbrains/kotlin/backend/konan/objcexport/ObjCExportHeaderGenerator.kt
index 9beebc7..595ea19 100644
--- a/kotlin-native/objcexport-header-generator/src/main/kotlin/org/jetbrains/kotlin/backend/konan/objcexport/ObjCExportHeaderGenerator.kt
+++ b/kotlin-native/objcexport-header-generator/src/main/kotlin/org/jetbrains/kotlin/backend/konan/objcexport/ObjCExportHeaderGenerator.kt
@@ -1358,6 +1358,18 @@
add("#import <$it>")
}
}
+
+ fun createInstance(
+ moduleDescriptors: List<ModuleDescriptor>,
+ mapper: ObjCExportMapper,
+ namer: ObjCExportNamer,
+ problemCollector: ObjCExportProblemCollector,
+ objcGenerics: Boolean,
+ shouldExportKDoc: Boolean,
+ additionalImports: List<String>,
+ ): ObjCExportHeaderGenerator = ObjCExportHeaderGeneratorImpl(
+ moduleDescriptors, mapper, namer, problemCollector, objcGenerics, shouldExportKDoc, additionalImports
+ )
}
}
diff --git a/kotlin-native/objcexport-header-generator/src/main/kotlin/org/jetbrains/kotlin/backend/konan/objcexport/ObjCExportHeaderGeneratorImpl.kt b/kotlin-native/objcexport-header-generator/src/main/kotlin/org/jetbrains/kotlin/backend/konan/objcexport/ObjCExportHeaderGeneratorImpl.kt
new file mode 100644
index 0000000..df98ea8
--- /dev/null
+++ b/kotlin-native/objcexport-header-generator/src/main/kotlin/org/jetbrains/kotlin/backend/konan/objcexport/ObjCExportHeaderGeneratorImpl.kt
@@ -0,0 +1,21 @@
+/*
+ * Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors.
+ * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
+ */
+
+package org.jetbrains.kotlin.backend.konan.objcexport
+
+import org.jetbrains.kotlin.descriptors.ModuleDescriptor
+
+internal class ObjCExportHeaderGeneratorImpl(
+ moduleDescriptors: List<ModuleDescriptor>,
+ mapper: ObjCExportMapper,
+ namer: ObjCExportNamer,
+ problemCollector: ObjCExportProblemCollector,
+ objcGenerics: Boolean,
+ override val shouldExportKDoc: Boolean,
+ private val additionalImports: List<String>,
+) : ObjCExportHeaderGenerator(moduleDescriptors, mapper, namer, objcGenerics, problemCollector) {
+ override fun getAdditionalImports(): List<String> =
+ additionalImports
+}
diff --git a/kotlin-native/objcexport-header-generator/src/main/kotlin/org/jetbrains/kotlin/backend/konan/objcexport/ObjCExportNamer.kt b/kotlin-native/objcexport-header-generator/src/main/kotlin/org/jetbrains/kotlin/backend/konan/objcexport/ObjCExportNamer.kt
index f5a16b2..aa8a203 100644
--- a/kotlin-native/objcexport-header-generator/src/main/kotlin/org/jetbrains/kotlin/backend/konan/objcexport/ObjCExportNamer.kt
+++ b/kotlin-native/objcexport-header-generator/src/main/kotlin/org/jetbrains/kotlin/backend/konan/objcexport/ObjCExportNamer.kt
@@ -284,7 +284,6 @@
private val problemCollector: ObjCExportProblemCollector,
private val local: Boolean
) : ObjCExportNamer {
-
constructor(
moduleDescriptors: Set<ModuleDescriptor>,
builtIns: KotlinBuiltIns,
diff --git a/kotlin-native/objcexport-header-generator/src/test/kotlin/org/jetbrains/kotlin/backend/konan/testUtils/Fe10ObjCExportHeaderGenerator.kt b/kotlin-native/objcexport-header-generator/src/test/kotlin/org/jetbrains/kotlin/backend/konan/testUtils/Fe10ObjCExportHeaderGenerator.kt
index eda60e4..8b58ea2 100644
--- a/kotlin-native/objcexport-header-generator/src/test/kotlin/org/jetbrains/kotlin/backend/konan/testUtils/Fe10ObjCExportHeaderGenerator.kt
+++ b/kotlin-native/objcexport-header-generator/src/test/kotlin/org/jetbrains/kotlin/backend/konan/testUtils/Fe10ObjCExportHeaderGenerator.kt
@@ -6,43 +6,11 @@
package org.jetbrains.kotlin.backend.konan.testUtils
import com.intellij.openapi.Disposable
-import org.jetbrains.kotlin.analyzer.ModuleInfo
-import org.jetbrains.kotlin.analyzer.common.CommonDependenciesContainer
-import org.jetbrains.kotlin.analyzer.common.CommonResolverForModuleFactory
-import org.jetbrains.kotlin.backend.konan.KlibFactories
-import org.jetbrains.kotlin.backend.konan.KonanConfig
-import org.jetbrains.kotlin.backend.konan.KonanConfigKeys
-import org.jetbrains.kotlin.backend.konan.KonanConfigKeys.Companion.KONAN_HOME
import org.jetbrains.kotlin.backend.konan.UnitSuspendFunctionObjCExport
-import org.jetbrains.kotlin.backend.konan.driver.BasicPhaseContext
import org.jetbrains.kotlin.backend.konan.objcexport.*
-import org.jetbrains.kotlin.backend.konan.objcexport.ObjCExportHeaderGeneratorImpl
-import org.jetbrains.kotlin.backend.konan.objcexport.ObjCExportMapper
-import org.jetbrains.kotlin.backend.konan.objcexport.ObjCExportNamerImpl
import org.jetbrains.kotlin.builtins.DefaultBuiltIns
-import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys
-import org.jetbrains.kotlin.cli.common.arguments.K2NativeCompilerArguments
-import org.jetbrains.kotlin.cli.common.createFlexiblePhaseConfig
-import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
-import org.jetbrains.kotlin.config.*
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
-import org.jetbrains.kotlin.descriptors.PackageFragmentProvider
-import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl
-import org.jetbrains.kotlin.konan.target.CompilerOutputKind
-import org.jetbrains.kotlin.library.resolveSingleFileKlib
-import org.jetbrains.kotlin.name.Name
-import org.jetbrains.kotlin.platform.CommonPlatforms
-import org.jetbrains.kotlin.platform.TargetPlatform
-import org.jetbrains.kotlin.platform.konan.NativePlatforms
-import org.jetbrains.kotlin.psi.KtPsiFactory
-import org.jetbrains.kotlin.resolve.CompilerEnvironment
-import org.jetbrains.kotlin.resolve.PlatformDependentAnalyzerServices
-import org.jetbrains.kotlin.resolve.konan.platform.NativePlatformAnalyzerServices
-import org.jetbrains.kotlin.storage.LockBasedStorageManager
-import org.jetbrains.kotlin.test.KotlinTestUtils
-import org.jetbrains.kotlin.test.testFramework.MockProjectEx
-import org.jetbrains.kotlin.test.util.KtTestUtil
import java.io.File
object Fe10ObjCExportHeaderGenerator : AbstractObjCExportHeaderGeneratorTest.ObjCExportHeaderGenerator {
@@ -70,19 +38,17 @@
)
val environment: KotlinCoreEnvironment = createKotlinCoreEnvironment(disposable)
- val phaseContext = BasicPhaseContext(
- KonanConfig(environment.project, environment.configuration)
- )
val kotlinFiles = root.walkTopDown().filter { it.isFile }.filter { it.extension == "kt" }.toList()
return ObjCExportHeaderGeneratorImpl(
- context = phaseContext,
moduleDescriptors = listOf(createModuleDescriptor(environment, kotlinFiles)),
mapper = mapper,
namer = namer,
problemCollector = ObjCExportProblemCollector.SILENT,
- objcGenerics = true
+ objcGenerics = true,
+ shouldExportKDoc = false,
+ additionalImports = emptyList()
)
}
}
\ No newline at end of file
diff --git a/kotlin-native/objcexport-header-generator/src/test/kotlin/org/jetbrains/kotlin/backend/konan/testUtils/Fe10Utils.kt b/kotlin-native/objcexport-header-generator/src/test/kotlin/org/jetbrains/kotlin/backend/konan/testUtils/Fe10Utils.kt
index 6ca5300..132b1df 100644
--- a/kotlin-native/objcexport-header-generator/src/test/kotlin/org/jetbrains/kotlin/backend/konan/testUtils/Fe10Utils.kt
+++ b/kotlin-native/objcexport-header-generator/src/test/kotlin/org/jetbrains/kotlin/backend/konan/testUtils/Fe10Utils.kt
@@ -9,8 +9,6 @@
import org.jetbrains.kotlin.analyzer.ModuleInfo
import org.jetbrains.kotlin.analyzer.common.CommonDependenciesContainer
import org.jetbrains.kotlin.analyzer.common.CommonResolverForModuleFactory
-import org.jetbrains.kotlin.backend.konan.KlibFactories
-import org.jetbrains.kotlin.backend.konan.KonanConfigKeys
import org.jetbrains.kotlin.builtins.DefaultBuiltIns
import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys
import org.jetbrains.kotlin.cli.common.arguments.K2NativeCompilerArguments
@@ -21,7 +19,6 @@
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
import org.jetbrains.kotlin.descriptors.PackageFragmentProvider
import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl
-import org.jetbrains.kotlin.konan.target.CompilerOutputKind
import org.jetbrains.kotlin.library.resolveSingleFileKlib
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.platform.CommonPlatforms
@@ -87,13 +84,6 @@
val configuration = KotlinTestUtils.newConfiguration()
configuration.put(CommonConfigurationKeys.LANGUAGE_VERSION_SETTINGS, createLanguageVersionSettings())
configuration.put(CLIConfigurationKeys.FLEXIBLE_PHASE_CONFIG, createFlexiblePhaseConfig(K2NativeCompilerArguments()))
- configuration.put(KonanConfigKeys.KONAN_HOME, konanHomePath)
- configuration.put(KonanConfigKeys.PRODUCE, CompilerOutputKind.FRAMEWORK)
- configuration.put(KonanConfigKeys.AUTO_CACHEABLE_FROM, emptyList())
- configuration.put(KonanConfigKeys.CACHE_DIRECTORIES, emptyList())
- configuration.put(KonanConfigKeys.CACHED_LIBRARIES, emptyMap())
- configuration.put(KonanConfigKeys.FRAMEWORK_IMPORT_HEADERS, emptyList())
- configuration.put(KonanConfigKeys.EXPORT_KDOC, true)
return configuration
}
diff --git a/kotlin-native/objcexport-header-generator/src/test/kotlin/org/jetbrains/kotlin/backend/konan/tests/ObjCExportMapperTest.kt b/kotlin-native/objcexport-header-generator/src/test/kotlin/org/jetbrains/kotlin/backend/konan/tests/ObjCExportMapperTest.kt
index e366036..e9d0f5b 100644
--- a/kotlin-native/objcexport-header-generator/src/test/kotlin/org/jetbrains/kotlin/backend/konan/tests/ObjCExportMapperTest.kt
+++ b/kotlin-native/objcexport-header-generator/src/test/kotlin/org/jetbrains/kotlin/backend/konan/tests/ObjCExportMapperTest.kt
@@ -6,8 +6,6 @@
package org.jetbrains.kotlin.backend.konan.tests
import com.intellij.openapi.util.Disposer
-import org.jetbrains.kotlin.backend.konan.KonanConfig
-import org.jetbrains.kotlin.backend.konan.driver.BasicPhaseContext
import org.jetbrains.kotlin.backend.konan.objcexport.*
import org.jetbrains.kotlin.backend.konan.testUtils.*
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
@@ -68,14 +66,13 @@
val objcExportTranslator = ObjCExportTranslatorImpl(
generator = ObjCExportHeaderGeneratorImpl(
- context = BasicPhaseContext(
- KonanConfig(kotlinCoreEnvironment.project, kotlinCoreEnvironment.configuration)
- ),
moduleDescriptors = listOf(module),
mapper = objcExportMapper,
namer = objcExportNamer,
problemCollector = ObjCExportProblemCollector.SILENT,
- objcGenerics = true
+ objcGenerics = true,
+ shouldExportKDoc = false,
+ additionalImports = emptyList()
),
mapper = objcExportMapper,
namer = objcExportNamer,