Native, K2: add ExperimentalForeignApi to generated forward declarations
cinterop tool should add ExperimentalForeignApi to all generated declarations, to indicate their experimental status and discourage using them in public Kotlin API. But the same considerations are applicable to forward declarations (cnames.*, objcnames.*), which are generated not by cinterop tool, but directly by the compiler. This commit adds ExperimentalForeignApi to those compiler-generated classes. ^KT-58362
This commit is contained in:
committed by
Space Team
parent
cba955cb3e
commit
ef6dcd9779
+17
-1
@@ -18,6 +18,8 @@ import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
||||
import org.jetbrains.kotlin.fir.declarations.builder.buildRegularClass
|
||||
import org.jetbrains.kotlin.fir.declarations.getDeprecationsProvider
|
||||
import org.jetbrains.kotlin.fir.declarations.impl.FirResolvedDeclarationStatusImpl
|
||||
import org.jetbrains.kotlin.fir.expressions.builder.buildAnnotation
|
||||
import org.jetbrains.kotlin.fir.expressions.impl.FirEmptyAnnotationArgumentMapping
|
||||
import org.jetbrains.kotlin.fir.resolve.providers.FirSymbolNamesProvider
|
||||
import org.jetbrains.kotlin.fir.resolve.providers.FirSymbolNamesProviderWithoutCallables
|
||||
import org.jetbrains.kotlin.fir.resolve.providers.FirSymbolProvider
|
||||
@@ -26,13 +28,15 @@ import org.jetbrains.kotlin.fir.scopes.FirKotlinScopeProvider
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.*
|
||||
import org.jetbrains.kotlin.fir.types.builder.buildResolvedTypeRef
|
||||
import org.jetbrains.kotlin.fir.types.constructClassType
|
||||
import org.jetbrains.kotlin.fir.types.toLookupTag
|
||||
import org.jetbrains.kotlin.library.KotlinLibrary
|
||||
import org.jetbrains.kotlin.library.includedForwardDeclarations
|
||||
import org.jetbrains.kotlin.library.isInterop
|
||||
import org.jetbrains.kotlin.name.NativeForwardDeclarationKind
|
||||
import org.jetbrains.kotlin.name.ClassId
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.name.NativeForwardDeclarationKind
|
||||
import org.jetbrains.kotlin.name.NativeStandardInteropNames
|
||||
|
||||
class NativeForwardDeclarationsSymbolProvider(
|
||||
session: FirSession,
|
||||
@@ -113,6 +117,18 @@ class NativeForwardDeclarationsSymbolProvider(
|
||||
type = ConeClassLikeLookupTagImpl(forwardDeclarationKind.superClassId)
|
||||
.constructClassType(emptyArray(), isNullable = false)
|
||||
}
|
||||
|
||||
annotations += buildAnnotation {
|
||||
annotationTypeRef = buildResolvedTypeRef {
|
||||
val annotationClassId = ClassId(
|
||||
NativeStandardInteropNames.cInteropPackage,
|
||||
NativeStandardInteropNames.ExperimentalForeignApi
|
||||
)
|
||||
type = annotationClassId.toLookupTag()
|
||||
.constructClassType(typeArguments = emptyArray(), isNullable = false)
|
||||
}
|
||||
argumentMapping = FirEmptyAnnotationArgumentMapping
|
||||
}
|
||||
}.apply {
|
||||
replaceDeprecationsProvider(getDeprecationsProvider(session))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user