[K/N][Tests] Move objCActionFqName to NativeStandardInteropNames

^KT-61259
This commit is contained in:
Vladimir Sukharev
2024-01-02 11:18:32 +01:00
committed by Space Team
parent 28ee61c57d
commit 7eb239c282
6 changed files with 10 additions and 13 deletions
@@ -22,13 +22,9 @@ import org.jetbrains.kotlin.fir.declarations.utils.isExpect
import org.jetbrains.kotlin.fir.types.UnexpandedTypeCheck
import org.jetbrains.kotlin.fir.types.coneType
import org.jetbrains.kotlin.fir.types.isUnit
import org.jetbrains.kotlin.name.ClassId
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.name.NativeStandardInteropNames.objCActionClassId
object FirNativeObjCActionChecker : FirClassChecker() {
// Copy/pasted from InteropFqNames.objCAction, since module `kotlin-native:backend.native` cannot be imported here for now.
val objCActionFqName = FqName("kotlinx.cinterop.ObjCAction")
@OptIn(UnexpandedTypeCheck::class)
override fun check(declaration: FirClass, context: CheckerContext, reporter: DiagnosticReporter) {
val session = context.session
@@ -39,7 +35,7 @@ object FirNativeObjCActionChecker : FirClassChecker() {
}
fun checkCanGenerateActionImp(function: FirSimpleFunction) {
val action = "@$objCActionFqName"
val action = "@${objCActionClassId.asFqNameString()}"
function.receiverParameter?.let {
reporter.reportOn(it.source, MUST_NOT_HAVE_EXTENSION_RECEIVER, "$action method", context)
@@ -60,7 +56,7 @@ object FirNativeObjCActionChecker : FirClassChecker() {
fun checkKotlinObjCClass(firClass: FirClass) {
for (decl in firClass.declarations) {
if (decl is FirSimpleFunction && decl.annotations.hasAnnotation(ClassId.topLevel(objCActionFqName), session))
if (decl is FirSimpleFunction && decl.annotations.hasAnnotation(objCActionClassId, session))
checkCanGenerateActionImp(decl)
}
}
@@ -1,9 +1,9 @@
// FIR_IDENTICAL
// OPT_IN: kotlin.native.internal.InternalForKotlinNative
// OPT_IN: kotlinx.cinterop.ExperimentalForeignApi
import kotlinx.cinterop.*
import kotlinx.cinterop.internal.*
@OptIn(kotlinx.cinterop.ExperimentalForeignApi::class)
@CStruct(spelling = "struct { }") class Z constructor(rawPtr: NativePtr) : CStructVar(rawPtr) {
val x: Pair<Int, Int>? = null
@CStruct.MemberAt(offset = 0L) get
@@ -21,6 +21,7 @@ object NativeStandardInteropNames {
val objCFactoryClassId = ClassId(cInteropPackage, Name.identifier("ObjCFactory"))
val objCConstructorClassId = ClassId(cInteropPackage, Name.identifier("ObjCConstructor"))
val externalObjCClassClassId = ClassId(cInteropPackage, Name.identifier("ExternalObjCClass"))
val objCActionClassId = ClassId(cInteropPackage, Name.identifier("ObjCAction"))
object ForwardDeclarations {
@@ -44,6 +44,7 @@ import org.jetbrains.kotlin.konan.ForeignExceptionMode
import org.jetbrains.kotlin.konan.library.KonanLibrary
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.name.NativeStandardInteropNames.objCActionClassId
import org.jetbrains.kotlin.native.interop.ObjCMethodInfo
internal class InteropLowering(generationState: NativeGenerationState) : FileLoweringPass {
@@ -212,7 +213,7 @@ private class InteropLoweringPart1(val generationState: NativeGenerationState) :
irClass.declarations.toList().mapNotNull {
when {
it is IrSimpleFunction && it.annotations.hasAnnotation(InteropFqNames.objCAction) ->
it is IrSimpleFunction && it.annotations.hasAnnotation(objCActionClassId.asSingleFqName()) ->
generateActionImp(it)
it is IrProperty && it.annotations.hasAnnotation(InteropFqNames.objCOutlet) ->
@@ -33,6 +33,7 @@ import org.jetbrains.kotlin.ir.util.*
import org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid
import org.jetbrains.kotlin.ir.visitors.acceptChildrenVoid
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.name.NativeStandardInteropNames.objCActionClassId
import org.jetbrains.kotlin.types.Variance
import org.jetbrains.kotlin.utils.fileUtils.descendantRelativeTo
import java.io.File
@@ -150,7 +151,7 @@ private class BackendChecker(
}
private fun checkCanGenerateActionImp(function: IrSimpleFunction) {
val action = "@${InteropFqNames.objCAction}"
val action = "@${objCActionClassId.asFqNameString()}"
function.extensionReceiverParameter?.let {
reportError(it, "$action method must not have extension receiver")
@@ -207,7 +208,7 @@ private class BackendChecker(
private fun checkKotlinObjCClass(irClass: IrClass) {
for (declaration in irClass.declarations) {
if (declaration is IrSimpleFunction && declaration.annotations.hasAnnotation(InteropFqNames.objCAction))
if (declaration is IrSimpleFunction && declaration.annotations.hasAnnotation(objCActionClassId.asSingleFqName()))
checkCanGenerateActionImp(declaration)
if (declaration is IrProperty && declaration.annotations.hasAnnotation(InteropFqNames.objCOutlet))
checkCanGenerateOutletSetterImp(declaration)
@@ -19,7 +19,6 @@ object InteropFqNames {
const val objCObjectBaseName = "ObjCObjectBase"
const val objCOverrideInitName = "OverrideInit"
const val objCActionName = "ObjCAction"
const val objCOutletName = "ObjCOutlet"
const val objCMethodImpName = "ObjCMethodImp"
const val exportObjCClassName = "ExportObjCClass"
@@ -77,7 +76,6 @@ object InteropFqNames {
val objCObjectBase = packageName.child(objCObjectBaseName)
val objCOverrideInit = objCObjectBase.child(objCOverrideInitName)
val objCAction = packageName.child(objCActionName)
val objCOutlet = packageName.child(objCOutletName)
val objCMethodImp = packageName.child(objCMethodImpName)
val exportObjCClass = packageName.child(exportObjCClassName)