diff --git a/kotlin-native/Interop/StubGenerator/src/main/kotlin/org/jetbrains/kotlin/native/interop/gen/KotlinCodeModel.kt b/kotlin-native/Interop/StubGenerator/src/main/kotlin/org/jetbrains/kotlin/native/interop/gen/KotlinCodeModel.kt index 502092a779c..450c38bb2f8 100644 --- a/kotlin-native/Interop/StubGenerator/src/main/kotlin/org/jetbrains/kotlin/native/interop/gen/KotlinCodeModel.kt +++ b/kotlin-native/Interop/StubGenerator/src/main/kotlin/org/jetbrains/kotlin/native/interop/gen/KotlinCodeModel.kt @@ -224,6 +224,8 @@ object KotlinTypes { val cValue by InteropClassifier + val experimentalForeignApi by InteropClassifier + private open class ClassifierAtPackage(val pkg: String) { operator fun getValue(thisRef: KotlinTypes, property: KProperty<*>): Classifier = Classifier.topLevel(pkg, property.name.replaceFirstChar(Char::uppercaseChar)) diff --git a/kotlin-native/Interop/StubGenerator/src/main/kotlin/org/jetbrains/kotlin/native/interop/gen/StubIr.kt b/kotlin-native/Interop/StubGenerator/src/main/kotlin/org/jetbrains/kotlin/native/interop/gen/StubIr.kt index fd127b4e79b..309e454a8ba 100644 --- a/kotlin-native/Interop/StubGenerator/src/main/kotlin/org/jetbrains/kotlin/native/interop/gen/StubIr.kt +++ b/kotlin-native/Interop/StubGenerator/src/main/kotlin/org/jetbrains/kotlin/native/interop/gen/StubIr.kt @@ -264,6 +264,8 @@ sealed class AnnotationStub(val classifier: Classifier) { class CEnumVarTypeSize(val size: Int) : AnnotationStub(Classifier.topLevel(cinteropInternalPackage, "CEnumVarTypeSize")) + object ExperimentalForeignApi : AnnotationStub(KotlinTypes.experimentalForeignApi) + private companion object { val cCallClassifier = Classifier.topLevel(cinteropInternalPackage, "CCall") diff --git a/kotlin-native/Interop/StubGenerator/src/main/kotlin/org/jetbrains/kotlin/native/interop/gen/StubIrMetadataEmitter.kt b/kotlin-native/Interop/StubGenerator/src/main/kotlin/org/jetbrains/kotlin/native/interop/gen/StubIrMetadataEmitter.kt index 432e7844177..f8bffdf9f00 100644 --- a/kotlin-native/Interop/StubGenerator/src/main/kotlin/org/jetbrains/kotlin/native/interop/gen/StubIrMetadataEmitter.kt +++ b/kotlin-native/Interop/StubGenerator/src/main/kotlin/org/jetbrains/kotlin/native/interop/gen/StubIrMetadataEmitter.kt @@ -444,6 +444,7 @@ private class MappingExtensions( ) is AnnotationStub.CStruct.CPlusPlusClass -> emptyMap() is AnnotationStub.CStruct.ManagedType -> emptyMap() + is AnnotationStub.ExperimentalForeignApi -> emptyMap() } return KmAnnotation(classifier.fqNameSerialized, args) } diff --git a/kotlin-native/Interop/StubGenerator/src/main/kotlin/org/jetbrains/kotlin/native/interop/gen/StubIrTextEmitter.kt b/kotlin-native/Interop/StubGenerator/src/main/kotlin/org/jetbrains/kotlin/native/interop/gen/StubIrTextEmitter.kt index f34c5426333..d1ace8ed472 100644 --- a/kotlin-native/Interop/StubGenerator/src/main/kotlin/org/jetbrains/kotlin/native/interop/gen/StubIrTextEmitter.kt +++ b/kotlin-native/Interop/StubGenerator/src/main/kotlin/org/jetbrains/kotlin/native/interop/gen/StubIrTextEmitter.kt @@ -4,7 +4,6 @@ */ package org.jetbrains.kotlin.native.interop.gen -import kotlinx.cinterop.ExperimentalForeignApi import org.jetbrains.kotlin.native.interop.gen.jvm.KotlinPlatform import org.jetbrains.kotlin.native.interop.indexer.* import org.jetbrains.kotlin.utils.addIfNotNull @@ -506,6 +505,8 @@ class StubIrTextEmitter( "@Deprecated(${annotationStub.message.quoteAsKotlinLiteral()}, " + "ReplaceWith(${annotationStub.replaceWith.quoteAsKotlinLiteral()}), " + "DeprecationLevel.${annotationStub.level.name})" + is AnnotationStub.ExperimentalForeignApi -> + "@${KotlinTypes.experimentalForeignApi.topLevelName}" is AnnotationStub.CEnumEntryAlias, is AnnotationStub.CEnumVarTypeSize, is AnnotationStub.CStruct.MemberAt,