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