[ObjCExport] Add object translation and error handling
- Also add forward declaration tests - Add hidden types support - Issues: KT-64857, KT-64952, KT-65080
This commit is contained in:
committed by
Space Team
parent
c483e54e2d
commit
480b8ec516
+5
-3
@@ -36,13 +36,15 @@ abstract class ObjCExportHeaderGenerator @InternalKotlinNativeApi constructor(
|
||||
|
||||
open val shouldExportKDoc = false
|
||||
|
||||
fun build(): List<String> = ObjCHeader(
|
||||
@InternalKotlinNativeApi
|
||||
fun buildHeader(): ObjCHeader = ObjCHeader(
|
||||
stubs = stubs,
|
||||
classForwardDeclarations = classForwardDeclarations,
|
||||
protocolForwardDeclarations = protocolForwardDeclarations,
|
||||
additionalImports = getAdditionalImports(),
|
||||
exportKDoc = shouldExportKDoc
|
||||
).lines
|
||||
)
|
||||
|
||||
fun build(): List<String> = buildHeader().render(shouldExportKDoc)
|
||||
|
||||
@InternalKotlinNativeApi
|
||||
fun buildInterface(): ObjCExportedInterface {
|
||||
|
||||
+9
-9
@@ -9,7 +9,6 @@ import com.intellij.openapi.Disposable
|
||||
import com.intellij.openapi.util.Disposer
|
||||
import org.jetbrains.kotlin.backend.konan.UnitSuspendFunctionObjCExport
|
||||
import org.jetbrains.kotlin.backend.konan.objcexport.*
|
||||
import org.jetbrains.kotlin.backend.konan.tests.ObjCExportHeaderGeneratorTest
|
||||
import org.jetbrains.kotlin.builtins.DefaultBuiltIns
|
||||
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
|
||||
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
||||
@@ -28,7 +27,7 @@ class Fe10HeaderGeneratorExtension : ParameterResolver, AfterEachCallback {
|
||||
}
|
||||
|
||||
override fun supportsParameter(parameterContext: ParameterContext, extensionContext: ExtensionContext): Boolean {
|
||||
return parameterContext.parameter.type == ObjCExportHeaderGeneratorTest.HeaderGenerator::class.java
|
||||
return parameterContext.parameter.type == HeaderGenerator::class.java
|
||||
}
|
||||
|
||||
override fun resolveParameter(parameterContext: ParameterContext, extensionContext: ExtensionContext): Any {
|
||||
@@ -43,15 +42,16 @@ class Fe10HeaderGeneratorExtension : ParameterResolver, AfterEachCallback {
|
||||
}
|
||||
}
|
||||
|
||||
private class Fe10HeaderGeneratorImpl(private val disposable: Disposable) :
|
||||
ObjCExportHeaderGeneratorTest.HeaderGenerator {
|
||||
override fun generateHeaders(root: File): String {
|
||||
val headerGenerator = createObjCExportHeaderGenerator(disposable, root)
|
||||
private class Fe10HeaderGeneratorImpl(private val disposable: Disposable) : HeaderGenerator {
|
||||
override fun generateHeaders(root: File, configuration: HeaderGenerator.Configuration): ObjCHeader {
|
||||
val headerGenerator = createObjCExportHeaderGenerator(disposable, root, configuration)
|
||||
headerGenerator.translateModuleDeclarations()
|
||||
return headerGenerator.build().joinToString(System.lineSeparator())
|
||||
return headerGenerator.buildHeader()
|
||||
}
|
||||
|
||||
private fun createObjCExportHeaderGenerator(disposable: Disposable, root: File): ObjCExportHeaderGenerator {
|
||||
private fun createObjCExportHeaderGenerator(
|
||||
disposable: Disposable, root: File, configuration: HeaderGenerator.Configuration,
|
||||
): ObjCExportHeaderGenerator {
|
||||
val mapper = ObjCExportMapper(
|
||||
unitSuspendFunctionExport = UnitSuspendFunctionObjCExport.DEFAULT
|
||||
)
|
||||
@@ -62,7 +62,7 @@ private class Fe10HeaderGeneratorImpl(private val disposable: Disposable) :
|
||||
local = false,
|
||||
problemCollector = ObjCExportProblemCollector.SILENT,
|
||||
configuration = object : ObjCExportNamer.Configuration {
|
||||
override val topLevelNamePrefix: String get() = ""
|
||||
override val topLevelNamePrefix: String get() = configuration.frameworkName
|
||||
override fun getAdditionalPrefix(module: ModuleDescriptor): String? = null
|
||||
override val objcGenerics: Boolean = true
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user