diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/ObjCInterop.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/ObjCInterop.kt index 7a8d8c5fd2d..caa183eda75 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/ObjCInterop.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/ObjCInterop.kt @@ -12,6 +12,7 @@ import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.descriptors.annotations.AnnotationDescriptor import org.jetbrains.kotlin.incremental.components.NoLookupLocation import org.jetbrains.kotlin.ir.declarations.* +import org.jetbrains.kotlin.ir.descriptors.IrBasedClassConstructorDescriptor import org.jetbrains.kotlin.ir.expressions.IrConstructorCall import org.jetbrains.kotlin.ir.types.classOrNull import org.jetbrains.kotlin.ir.types.getPublicSignature @@ -272,6 +273,12 @@ fun IrConstructor.getObjCInitMethod(): IrSimpleFunction? { } fun ConstructorDescriptor.getObjCInitMethod(): FunctionDescriptor? { + if (this is IrBasedClassConstructorDescriptor) { + // E.g. in case of K2. + // The constructedClass has empty member scope, so we have to delegate to IR to find the init method. + return this.owner.getObjCInitMethod()?.descriptor + } + return this.annotations.findAnnotation(objCConstructorFqName)?.let { val initSelector = it.getAnnotationStringValue("initSelector") val memberScope = constructedClass.unsubstitutedMemberScope