diff --git a/.space/CODEOWNERS b/.space/CODEOWNERS index dc8e24977b5..9ac5d370ef6 100644 --- a/.space/CODEOWNERS +++ b/.space/CODEOWNERS @@ -77,6 +77,7 @@ /compiler/ir/ir.ir2cfg/ Mikhail.Glukhikh /compiler/ir/ir.psi2ir/ "Kotlin JVM" /compiler/ir/ir.tree/ "Kotlin JVM" "Kotlin JS" "Kotlin Native" "Kotlin Wasm" +/compiler/ir/ir.objcinterop/ "Kotlin Native" /compiler/ir/serialization.common/ "Kotlin Native" /compiler/ir/serialization.js/ "Kotlin JS" /compiler/ir/serialization.jvm/ "Kotlin JVM" diff --git a/build.gradle.kts b/build.gradle.kts index fc9d6792e8c..88496670690 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -108,6 +108,7 @@ val irCompilerModules = arrayOf( ":compiler:ir.serialization.common", ":compiler:ir.serialization.js", ":compiler:ir.serialization.jvm", + ":compiler:ir.objcinterop", ":compiler:ir.backend.common", ":compiler:ir.interpreter", ":wasm:wasm.ir" diff --git a/compiler/ir/ir.objcinterop/ReadMe.md b/compiler/ir/ir.objcinterop/ReadMe.md new file mode 100644 index 00000000000..0c924d95bae --- /dev/null +++ b/compiler/ir/ir.objcinterop/ReadMe.md @@ -0,0 +1,4 @@ +## Utilities related to Kotlin/Native interoperability with Objective-C + +This module contains helper functions for extracting various information related to Objective-C interoperability +from IR nodes. \ No newline at end of file diff --git a/compiler/ir/ir.objcinterop/build.gradle.kts b/compiler/ir/ir.objcinterop/build.gradle.kts new file mode 100644 index 00000000000..5ddcf446085 --- /dev/null +++ b/compiler/ir/ir.objcinterop/build.gradle.kts @@ -0,0 +1,19 @@ +plugins { + kotlin("jvm") + id("jps-compatible") +} + +dependencies { + api(project(":core:compiler.common")) + api(project(":compiler:ir.tree")) + + implementation(project(":core:compiler.common.native")) + + compileOnly(intellijCore()) +} + +sourceSets { + "main" { projectDefault() } +} + +optInToIrSymbolInternals() diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/ObjCInterop.kt b/compiler/ir/ir.objcinterop/src/org/jetbrains/kotlin/ir/objcinterop/ObjCInterop.kt similarity index 90% rename from kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/ObjCInterop.kt rename to compiler/ir/ir.objcinterop/src/org/jetbrains/kotlin/ir/objcinterop/ObjCInterop.kt index 529f3681354..64e90ca0cea 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/ObjCInterop.kt +++ b/compiler/ir/ir.objcinterop/src/org/jetbrains/kotlin/ir/objcinterop/ObjCInterop.kt @@ -1,15 +1,10 @@ /* - * Copyright 2010-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license - * that can be found in the LICENSE file. + * Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ -package org.jetbrains.kotlin.backend.konan +package org.jetbrains.kotlin.ir.objcinterop -import org.jetbrains.kotlin.backend.konan.descriptors.getAnnotationStringValue -import org.jetbrains.kotlin.backend.konan.descriptors.getAnnotationValueOrNull -import org.jetbrains.kotlin.backend.konan.descriptors.getStringValue -import org.jetbrains.kotlin.backend.konan.ir.getAnnotationArgumentValue -import org.jetbrains.kotlin.backend.konan.ir.parentDeclarationsWithSelf import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.descriptors.annotations.AnnotationDescriptor import org.jetbrains.kotlin.incremental.components.NoLookupLocation @@ -33,16 +28,17 @@ import org.jetbrains.kotlin.resolve.descriptorUtil.parentsWithSelf import org.jetbrains.kotlin.types.KotlinType import org.jetbrains.kotlin.types.TypeUtils import org.jetbrains.kotlin.types.typeUtil.supertypes +import org.jetbrains.kotlin.utils.atMostOne -internal val interopPackageName = InteropFqNames.packageName +internal val interopPackageName = NativeStandardInteropNames.cInteropPackage internal val objCObjectFqName = NativeStandardInteropNames.objCObjectClassId.asSingleFqName() private val objCClassFqName = interopPackageName.child(Name.identifier("ObjCClass")) private val objCProtocolFqName = interopPackageName.child(Name.identifier("ObjCProtocol")) -internal val externalObjCClassFqName = NativeStandardInteropNames.externalObjCClassClassId.asSingleFqName() -internal val objCDirectFqName = NativeStandardInteropNames.objCDirectClassId.asSingleFqName() -internal val objCMethodFqName = NativeStandardInteropNames.objCMethodClassId.asSingleFqName() -internal val objCConstructorFqName = NativeStandardInteropNames.objCConstructorClassId.asSingleFqName() -internal val objCFactoryFqName = NativeStandardInteropNames.objCFactoryClassId.asSingleFqName() +val externalObjCClassFqName = NativeStandardInteropNames.externalObjCClassClassId.asSingleFqName() +val objCDirectFqName = NativeStandardInteropNames.objCDirectClassId.asSingleFqName() +val objCMethodFqName = NativeStandardInteropNames.objCMethodClassId.asSingleFqName() +val objCConstructorFqName = NativeStandardInteropNames.objCConstructorClassId.asSingleFqName() +val objCFactoryFqName = NativeStandardInteropNames.objCFactoryClassId.asSingleFqName() fun ClassDescriptor.isObjCClass(): Boolean = this.containingDeclaration.fqNameSafe != interopPackageName && @@ -57,7 +53,7 @@ private fun IrClass.selfOrAnySuperClass(pred: (IrClass) -> Boolean): Boolean { return superTypes.any { it.classOrNull!!.owner.selfOrAnySuperClass(pred) } } -internal fun IrClass.isObjCClass() = this.packageFqName != interopPackageName && +fun IrClass.isObjCClass() = this.packageFqName != interopPackageName && selfOrAnySuperClass { it.hasEqualFqName(objCObjectFqName) } fun ClassDescriptor.isExternalObjCClass(): Boolean = this.isObjCClass() && @@ -102,14 +98,14 @@ fun IrFunction.isObjCClassMethod() = fun FunctionDescriptor.isExternalObjCClassMethod() = this.containingDeclaration.let { it is ClassDescriptor && it.isExternalObjCClass() } -internal fun IrFunction.isExternalObjCClassMethod() = +fun IrFunction.isExternalObjCClassMethod() = this.parent.let {it is IrClass && it.isExternalObjCClass()} // Special case: methods from Kotlin Objective-C classes can be called virtually from bridges. fun FunctionDescriptor.canObjCClassMethodBeCalledVirtually(overriddenDescriptor: FunctionDescriptor) = overriddenDescriptor.isOverridable && this.kind.isReal && !this.isExternalObjCClassMethod() -internal fun IrFunction.canObjCClassMethodBeCalledVirtually(overridden: IrFunction) = +fun IrFunction.canObjCClassMethodBeCalledVirtually(overridden: IrFunction) = overridden.isOverridable && !this.isFakeOverride && !this.isExternalObjCClassMethod() fun ClassDescriptor.isKotlinObjCClass(): Boolean = this.isObjCClass() && !this.isExternalObjCClass() @@ -122,10 +118,10 @@ private fun FunctionDescriptor.decodeObjCMethodAnnotation(): ObjCMethodInfo? { val methodInfo = this.annotations.findAnnotation(objCMethodFqName)?.let { ObjCMethodInfo( - selector = it.getStringValue("selector"), - encoding = it.getStringValue("encoding"), + selector = it.getAnnotationStringValue("selector"), + encoding = it.getAnnotationStringValue("encoding"), isStret = it.getArgumentValueOrNull("isStret") ?: false, - directSymbol = this.annotations.findAnnotation(objCDirectFqName)?.getStringValue("symbol"), + directSymbol = this.annotations.findAnnotation(objCDirectFqName)?.getAnnotationStringValue("symbol"), ) } diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/IrUtils.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/IrUtils.kt index 0f969556b5c..a4707e444f3 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/IrUtils.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/IrUtils.kt @@ -28,6 +28,7 @@ import org.jetbrains.kotlin.ir.types.* import org.jetbrains.kotlin.ir.types.impl.IrSimpleTypeImpl import org.jetbrains.kotlin.ir.types.impl.makeTypeProjection import org.jetbrains.kotlin.ir.visitors.IrElementVisitor +import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.name.SpecialNames @@ -365,11 +366,38 @@ fun IrAnnotationContainer.hasAnnotation(name: FqName) = it.symbol.owner.parentAsClass.hasEqualFqName(name) } +fun IrAnnotationContainer.hasAnnotation(classId: ClassId) = + annotations.any { it.symbol.owner.parentAsClass.classId == classId } + fun IrAnnotationContainer.hasAnnotation(symbol: IrClassSymbol) = annotations.any { it.symbol.owner.parentAsClass.symbol == symbol } +fun IrConstructorCall.getAnnotationStringValue() = (getValueArgument(0) as? IrConst<*>)?.value as String? + +fun IrConstructorCall.getAnnotationStringValue(name: String): String { + val parameter = symbol.owner.valueParameters.single { it.name.asString() == name } + return (getValueArgument(parameter.index) as IrConst<*>).value as String +} + +inline fun IrConstructorCall.getAnnotationValueOrNull(name: String): T? { + val parameter = symbol.owner.valueParameters.atMostOne { it.name.asString() == name } + return parameter?.let { getValueArgument(it.index)?.let { (it as IrConst<*>).value as T } } +} + +inline fun IrDeclaration.getAnnotationArgumentValue(fqName: FqName, argumentName: String): T? { + val annotation = this.annotations.findAnnotation(fqName) ?: return null + for (index in 0 until annotation.valueArgumentsCount) { + val parameter = annotation.symbol.owner.valueParameters[index] + if (parameter.name == Name.identifier(argumentName)) { + val actual = annotation.getValueArgument(index) as? IrConst<*> ?: return null + return actual.value as T + } + } + return null +} + fun IrClass.getAnnotationRetention(): KotlinRetention? { val retentionArgument = getAnnotation(StandardNames.FqNames.retention)?.getValueArgument(StandardClassIds.Annotations.ParameterNames.retentionValue) @@ -590,6 +618,9 @@ val IrDeclaration.parentClassOrNull: IrClass? } } +val IrDeclaration.parentDeclarationsWithSelf: Sequence + get() = generateSequence(this) { it.parent as? IrDeclaration } + val IrFunction.allTypeParameters: List get() = if (this is IrConstructor) parentAsClass.typeParameters + typeParameters diff --git a/kotlin-native/backend.native/build.gradle b/kotlin-native/backend.native/build.gradle index 7c65176df95..27cc2519dc5 100644 --- a/kotlin-native/backend.native/build.gradle +++ b/kotlin-native/backend.native/build.gradle @@ -162,6 +162,7 @@ dependencies { compilerApi project(":core:compiler.common.native") compilerApi project(":compiler:ir.tree") compilerApi project(":compiler:ir.backend.common") + compilerApi project(":compiler:ir.objcinterop") compilerApi project(":compiler:util") compilerApi project(":native:frontend.native") compilerApi project(":compiler:cli-common") diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/resources/META-INF/services/org.jetbrains.kotlin.resolve.ExternalOverridabilityCondition b/kotlin-native/backend.native/compiler/ir/backend.native/resources/META-INF/services/org.jetbrains.kotlin.resolve.ExternalOverridabilityCondition index d558692ac29..7f0d039cb6e 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/resources/META-INF/services/org.jetbrains.kotlin.resolve.ExternalOverridabilityCondition +++ b/kotlin-native/backend.native/compiler/ir/backend.native/resources/META-INF/services/org.jetbrains.kotlin.resolve.ExternalOverridabilityCondition @@ -1 +1 @@ -org.jetbrains.kotlin.backend.konan.ObjCOverridabilityCondition +org.jetbrains.kotlin.ir.objcinterop.ObjCOverridabilityCondition diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/CodeGenerationInfo.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/CodeGenerationInfo.kt index acb5b70c787..b7c0f141841 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/CodeGenerationInfo.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/CodeGenerationInfo.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.backend.konan import org.jetbrains.kotlin.ir.declarations.IrClass +import org.jetbrains.kotlin.ir.objcinterop.isExternalObjCClass /** * We don't need to generate RTTI in some cases, e.g. Objective-C external classes. diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/cgen/CBridgeGen.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/cgen/CBridgeGen.kt index ae55a65d8d6..27f97cd42e9 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/cgen/CBridgeGen.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/cgen/CBridgeGen.kt @@ -6,7 +6,7 @@ import org.jetbrains.kotlin.backend.common.lower.irNot import org.jetbrains.kotlin.backend.konan.* import org.jetbrains.kotlin.backend.konan.ir.KonanSymbols import org.jetbrains.kotlin.backend.konan.ir.buildSimpleAnnotation -import org.jetbrains.kotlin.backend.konan.ir.getAnnotationArgumentValue +import org.jetbrains.kotlin.ir.util.getAnnotationArgumentValue import org.jetbrains.kotlin.backend.konan.ir.konanLibrary import org.jetbrains.kotlin.backend.konan.lower.FunctionReferenceLowering import org.jetbrains.kotlin.descriptors.ClassKind @@ -22,6 +22,8 @@ import org.jetbrains.kotlin.ir.declarations.impl.* import org.jetbrains.kotlin.ir.expressions.* import org.jetbrains.kotlin.ir.expressions.impl.IrConstImpl import org.jetbrains.kotlin.ir.expressions.impl.IrFunctionReferenceImpl +import org.jetbrains.kotlin.ir.objcinterop.getObjCMethodInfo +import org.jetbrains.kotlin.ir.objcinterop.isObjCMetaClass import org.jetbrains.kotlin.ir.symbols.IrClassSymbol import org.jetbrains.kotlin.ir.symbols.impl.* import org.jetbrains.kotlin.ir.types.* diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/cgen/InteropIrUtils.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/cgen/InteropIrUtils.kt index 079598364f8..6de5ab4bb1d 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/cgen/InteropIrUtils.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/cgen/InteropIrUtils.kt @@ -13,10 +13,7 @@ import org.jetbrains.kotlin.ir.IrBuiltIns import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI import org.jetbrains.kotlin.ir.declarations.* import org.jetbrains.kotlin.ir.types.* -import org.jetbrains.kotlin.ir.util.fqNameForIrSerialization -import org.jetbrains.kotlin.ir.util.hasAnnotation -import org.jetbrains.kotlin.ir.util.isEnumClass -import org.jetbrains.kotlin.ir.util.isUnsigned +import org.jetbrains.kotlin.ir.util.* import org.jetbrains.kotlin.konan.target.KonanTarget import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.Name diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/descriptors/ClassLayoutBuilder.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/descriptors/ClassLayoutBuilder.kt index bdaccf6648c..0240e033a7b 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/descriptors/ClassLayoutBuilder.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/descriptors/ClassLayoutBuilder.kt @@ -23,6 +23,7 @@ import org.jetbrains.kotlin.ir.IrElement import org.jetbrains.kotlin.ir.declarations.* import org.jetbrains.kotlin.ir.expressions.IrClassReference import org.jetbrains.kotlin.ir.expressions.IrConst +import org.jetbrains.kotlin.ir.objcinterop.* import org.jetbrains.kotlin.ir.symbols.IrFieldSymbol import org.jetbrains.kotlin.ir.types.IrType import org.jetbrains.kotlin.ir.util.* diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/descriptors/DescriptorUtils.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/descriptors/DescriptorUtils.kt index 1eb3c033ae5..8d35eb3fca4 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/descriptors/DescriptorUtils.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/descriptors/DescriptorUtils.kt @@ -5,7 +5,6 @@ package org.jetbrains.kotlin.backend.konan.descriptors -import org.jetbrains.kotlin.utils.atMostOne import org.jetbrains.kotlin.backend.konan.* import org.jetbrains.kotlin.backend.konan.ir.getSuperClassNotAny import org.jetbrains.kotlin.backend.konan.ir.getSuperInterfaces @@ -17,8 +16,6 @@ import org.jetbrains.kotlin.ir.declarations.IrClass import org.jetbrains.kotlin.ir.declarations.IrConstructor import org.jetbrains.kotlin.ir.declarations.IrFunction import org.jetbrains.kotlin.ir.declarations.IrSimpleFunction -import org.jetbrains.kotlin.ir.expressions.IrConst -import org.jetbrains.kotlin.ir.expressions.IrConstructorCall import org.jetbrains.kotlin.ir.symbols.IrClassifierSymbol import org.jetbrains.kotlin.ir.symbols.IrFunctionSymbol import org.jetbrains.kotlin.ir.symbols.IrSimpleFunctionSymbol @@ -249,18 +246,6 @@ internal fun IrClass.isFrozen(context: Context): Boolean { } } -fun IrConstructorCall.getAnnotationStringValue() = (getValueArgument(0) as? IrConst<*>)?.value as String? - -fun IrConstructorCall.getAnnotationStringValue(name: String): String { - val parameter = symbol.owner.valueParameters.single { it.name.asString() == name } - return (getValueArgument(parameter.index) as IrConst<*>).value as String -} - -inline fun IrConstructorCall.getAnnotationValueOrNull(name: String): T? { - val parameter = symbol.owner.valueParameters.atMostOne { it.name.asString() == name } - return parameter?.let { getValueArgument(it.index)?.let { (it as IrConst<*>).value as T } } -} - fun IrFunction.externalSymbolOrThrow(): String? { annotations.findAnnotation(RuntimeNames.symbolNameAnnotation)?.let { return it.getAnnotationStringValue() } diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/descriptors/LegacyDescriptorUtils.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/descriptors/LegacyDescriptorUtils.kt index 9cf98083449..0de1a8e1064 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/descriptors/LegacyDescriptorUtils.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/descriptors/LegacyDescriptorUtils.kt @@ -5,11 +5,7 @@ package org.jetbrains.kotlin.backend.konan.descriptors -import org.jetbrains.kotlin.utils.atMostOne -import org.jetbrains.kotlin.backend.konan.RuntimeNames -import org.jetbrains.kotlin.builtins.konan.KonanBuiltIns import org.jetbrains.kotlin.descriptors.* -import org.jetbrains.kotlin.descriptors.annotations.AnnotationDescriptor import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.resolve.OverridingUtil @@ -96,15 +92,6 @@ internal fun DeclarationDescriptor.allContainingDeclarations(): List { val result = mutableSetOf() val packageFragmentProvider = (module as? ModuleDescriptorImpl)?.packageFragmentProviderForModuleContentWithoutDependencies diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/ir/FakeIrUtils.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/ir/FakeIrUtils.kt index 18af9b5f7c4..7029ad45ac1 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/ir/FakeIrUtils.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/ir/FakeIrUtils.kt @@ -5,13 +5,10 @@ package org.jetbrains.kotlin.backend.konan.ir -import org.jetbrains.kotlin.backend.konan.* -import org.jetbrains.kotlin.backend.konan.llvm.llvmSymbolOrigin import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI -import org.jetbrains.kotlin.ir.declarations.* +import org.jetbrains.kotlin.ir.objcinterop.isObjCObjectType import org.jetbrains.kotlin.ir.types.IrType import org.jetbrains.kotlin.ir.types.toKotlinType -import org.jetbrains.kotlin.ir.util.getPackageFragment // This file contains some IR utilities which actually use descriptors. // TODO: port this code to IR. diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/ir/FunctionsWithoutBoundCheckGenerator.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/ir/FunctionsWithoutBoundCheckGenerator.kt index 712d2036f73..b6545a7629a 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/ir/FunctionsWithoutBoundCheckGenerator.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/ir/FunctionsWithoutBoundCheckGenerator.kt @@ -9,7 +9,7 @@ import org.jetbrains.kotlin.backend.konan.BinaryType import org.jetbrains.kotlin.backend.konan.KonanBackendContext import org.jetbrains.kotlin.backend.konan.KonanFqNames import org.jetbrains.kotlin.backend.konan.computeBinaryType -import org.jetbrains.kotlin.backend.konan.descriptors.getAnnotationStringValue +import org.jetbrains.kotlin.ir.util.getAnnotationStringValue import org.jetbrains.kotlin.descriptors.DescriptorVisibilities import org.jetbrains.kotlin.descriptors.Modality import org.jetbrains.kotlin.ir.UNDEFINED_OFFSET diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/ir/NewIrUtils.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/ir/NewIrUtils.kt index 9e7d63c7e84..490e9046f60 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/ir/NewIrUtils.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/ir/NewIrUtils.kt @@ -26,8 +26,6 @@ import org.jetbrains.kotlin.ir.util.* import org.jetbrains.kotlin.library.KotlinLibrary import org.jetbrains.kotlin.library.metadata.DeserializedKlibModuleOrigin import org.jetbrains.kotlin.library.metadata.klibModuleOrigin -import org.jetbrains.kotlin.name.FqName -import org.jetbrains.kotlin.name.Name private fun IrClass.isClassTypeWithSignature(signature: IdSignature.CommonSignature): Boolean { return signature == symbol.signature @@ -48,24 +46,9 @@ fun IrClass.getSuperInterfaces() = this.superClasses.map { it.owner }.filter { i fun IrClass.isSpecialClassWithNoSupertypes() = this.isAny() || this.isNothing() -inline fun IrDeclaration.getAnnotationArgumentValue(fqName: FqName, argumentName: String): T? { - val annotation = this.annotations.findAnnotation(fqName) ?: return null - for (index in 0 until annotation.valueArgumentsCount) { - val parameter = annotation.symbol.owner.valueParameters[index] - if (parameter.name == Name.identifier(argumentName)) { - val actual = annotation.getValueArgument(index) as? IrConst<*> ?: return null - return actual.value as T - } - } - return null -} - fun IrValueParameter.isInlineParameter(): Boolean = !this.isNoinline && (this.type.isFunction() || this.type.isSuspendFunction()) && !this.type.isMarkedNullable() -val IrDeclaration.parentDeclarationsWithSelf: Sequence - get() = generateSequence(this, { it.parent as? IrDeclaration }) - fun buildSimpleAnnotation(irBuiltIns: IrBuiltIns, startOffset: Int, endOffset: Int, annotationClass: IrClass, vararg args: String): IrConstructorCall { val constructor = annotationClass.constructors.let { diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/BinaryInterface.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/BinaryInterface.kt index 660c36731f2..7ad60677bfc 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/BinaryInterface.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/BinaryInterface.kt @@ -10,11 +10,11 @@ import org.jetbrains.kotlin.backend.common.serialization.mangle.MangleConstant import org.jetbrains.kotlin.backend.common.serialization.mangle.SpecialDeclarationType import org.jetbrains.kotlin.backend.konan.RuntimeNames import org.jetbrains.kotlin.backend.konan.descriptors.externalSymbolOrThrow -import org.jetbrains.kotlin.backend.konan.descriptors.getAnnotationStringValue +import org.jetbrains.kotlin.ir.util.getAnnotationStringValue import org.jetbrains.kotlin.backend.konan.descriptors.isAbstract import org.jetbrains.kotlin.backend.konan.ir.isUnit -import org.jetbrains.kotlin.backend.konan.isExternalObjCClass -import org.jetbrains.kotlin.backend.konan.isKotlinObjCClass +import org.jetbrains.kotlin.ir.objcinterop.isExternalObjCClass +import org.jetbrains.kotlin.ir.objcinterop.isKotlinObjCClass import org.jetbrains.kotlin.backend.konan.serialization.AbstractKonanIrMangler import org.jetbrains.kotlin.ir.declarations.* import org.jetbrains.kotlin.ir.util.findAnnotation diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/CodeGenerator.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/CodeGenerator.kt index eb1ca844b95..1bf5ee53b74 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/CodeGenerator.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/CodeGenerator.kt @@ -18,6 +18,7 @@ import org.jetbrains.kotlin.backend.konan.llvm.objc.* import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.ir.UNDEFINED_OFFSET import org.jetbrains.kotlin.ir.declarations.* +import org.jetbrains.kotlin.ir.objcinterop.* import org.jetbrains.kotlin.ir.util.* import org.jetbrains.kotlin.konan.ForeignExceptionMode import org.jetbrains.kotlin.konan.target.CompilerOutputKind diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/IntrinsicGenerator.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/IntrinsicGenerator.kt index 7607632a163..8185471ecc9 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/IntrinsicGenerator.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/IntrinsicGenerator.kt @@ -5,7 +5,7 @@ import llvm.* import org.jetbrains.kotlin.backend.konan.KonanFqNames import org.jetbrains.kotlin.backend.konan.MemoryModel import org.jetbrains.kotlin.backend.konan.RuntimeNames -import org.jetbrains.kotlin.backend.konan.descriptors.getAnnotationStringValue +import org.jetbrains.kotlin.ir.util.getAnnotationStringValue import org.jetbrains.kotlin.backend.konan.descriptors.isConstantConstructorIntrinsic import org.jetbrains.kotlin.backend.konan.descriptors.isTypedIntrinsic import org.jetbrains.kotlin.backend.konan.llvm.objc.genObjCSelector diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/IrToBitcode.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/IrToBitcode.kt index 8516a4a55ac..746ead107c9 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/IrToBitcode.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/IrToBitcode.kt @@ -30,6 +30,7 @@ import org.jetbrains.kotlin.ir.expressions.* import org.jetbrains.kotlin.ir.symbols.IrFunctionSymbol import org.jetbrains.kotlin.ir.types.* import org.jetbrains.kotlin.ir.util.* +import org.jetbrains.kotlin.ir.objcinterop.* import org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid import org.jetbrains.kotlin.ir.visitors.acceptChildrenVoid import org.jetbrains.kotlin.ir.visitors.acceptVoid diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/KotlinObjCClassInfoGenerator.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/KotlinObjCClassInfoGenerator.kt index b5eba425a5a..ffaf1f86d29 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/KotlinObjCClassInfoGenerator.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/KotlinObjCClassInfoGenerator.kt @@ -8,11 +8,12 @@ package org.jetbrains.kotlin.backend.konan.llvm import llvm.LLVMLinkage import llvm.LLVMValueRef import org.jetbrains.kotlin.backend.konan.* -import org.jetbrains.kotlin.backend.konan.descriptors.getAnnotationStringValue +import org.jetbrains.kotlin.ir.util.getAnnotationStringValue import org.jetbrains.kotlin.backend.konan.ir.* import org.jetbrains.kotlin.ir.declarations.IrClass import org.jetbrains.kotlin.ir.declarations.IrSimpleFunction import org.jetbrains.kotlin.ir.util.* +import org.jetbrains.kotlin.ir.objcinterop.* internal class KotlinObjCClassInfoGenerator(override val generationState: NativeGenerationState) : ContextUtils { fun generate(irClass: IrClass) { diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/LlvmDeclarations.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/LlvmDeclarations.kt index fb11f2e363e..95a5ff7deff 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/LlvmDeclarations.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/LlvmDeclarations.kt @@ -19,6 +19,7 @@ import org.jetbrains.kotlin.ir.IrElement import org.jetbrains.kotlin.ir.declarations.* import org.jetbrains.kotlin.ir.symbols.IrFieldSymbol import org.jetbrains.kotlin.ir.util.* +import org.jetbrains.kotlin.ir.objcinterop.* import org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid import org.jetbrains.kotlin.ir.visitors.acceptChildrenVoid import org.jetbrains.kotlin.library.KotlinLibrary diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/RTTIGenerator.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/RTTIGenerator.kt index f48563532ab..fd643bc6455 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/RTTIGenerator.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/RTTIGenerator.kt @@ -15,6 +15,7 @@ import org.jetbrains.kotlin.backend.konan.lower.getObjectClassInstanceFunction import org.jetbrains.kotlin.builtins.PrimitiveType import org.jetbrains.kotlin.ir.declarations.* import org.jetbrains.kotlin.ir.types.* +import org.jetbrains.kotlin.ir.objcinterop.* import org.jetbrains.kotlin.ir.util.* internal class RTTIGenerator( diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/RetainAnnotation.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/RetainAnnotation.kt index 87594ecc93f..8b1c45b96fa 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/RetainAnnotation.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/RetainAnnotation.kt @@ -5,7 +5,7 @@ package org.jetbrains.kotlin.backend.konan.llvm -import org.jetbrains.kotlin.backend.konan.descriptors.getAnnotationStringValue +import org.jetbrains.kotlin.ir.util.getAnnotationStringValue import org.jetbrains.kotlin.ir.declarations.IrFunction import org.jetbrains.kotlin.ir.util.findAnnotation import org.jetbrains.kotlin.konan.target.KonanTarget diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/CacheInfoBuilder.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/CacheInfoBuilder.kt index bba6b30af82..40e02f4ad0a 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/CacheInfoBuilder.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/CacheInfoBuilder.kt @@ -10,7 +10,7 @@ import org.jetbrains.kotlin.backend.common.serialization.SerializedKlibFingerpri import org.jetbrains.kotlin.backend.konan.DECLARATION_ORIGIN_FUNCTION_CLASS import org.jetbrains.kotlin.backend.konan.NativeGenerationState import org.jetbrains.kotlin.backend.konan.KonanFqNames -import org.jetbrains.kotlin.backend.konan.isExternalObjCClass +import org.jetbrains.kotlin.ir.objcinterop.isExternalObjCClass import org.jetbrains.kotlin.backend.konan.isFunctionInterfaceFile import org.jetbrains.kotlin.backend.konan.serialization.KonanManglerIr import org.jetbrains.kotlin.backend.konan.serialization.KonanPartialModuleDeserializer diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/InteropCallConvertors.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/InteropCallConvertors.kt index bfac1b291a5..0850aabb3a7 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/InteropCallConvertors.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/InteropCallConvertors.kt @@ -7,7 +7,7 @@ package org.jetbrains.kotlin.backend.konan.lower import org.jetbrains.kotlin.backend.konan.PrimitiveBinaryType import org.jetbrains.kotlin.backend.konan.RuntimeNames import org.jetbrains.kotlin.backend.konan.cgen.* -import org.jetbrains.kotlin.backend.konan.descriptors.getAnnotationStringValue +import org.jetbrains.kotlin.ir.util.getAnnotationStringValue import org.jetbrains.kotlin.backend.konan.ir.KonanSymbols import org.jetbrains.kotlin.backend.konan.llvm.IntrinsicType import org.jetbrains.kotlin.ir.IrBuiltIns diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/InteropLowering.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/InteropLowering.kt index 3f9e349f3b4..a2515a9a61a 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/InteropLowering.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/InteropLowering.kt @@ -32,6 +32,7 @@ import org.jetbrains.kotlin.ir.declarations.impl.IrFunctionImpl import org.jetbrains.kotlin.ir.declarations.impl.IrValueParameterImpl import org.jetbrains.kotlin.ir.expressions.* import org.jetbrains.kotlin.ir.expressions.impl.* +import org.jetbrains.kotlin.ir.objcinterop.* import org.jetbrains.kotlin.ir.util.toIrConst import org.jetbrains.kotlin.ir.symbols.IrClassSymbol import org.jetbrains.kotlin.ir.symbols.IrFunctionSymbol diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/ObjectClassLowering.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/ObjectClassLowering.kt index 58434b6f5cb..2fb5f29a106 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/ObjectClassLowering.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/ObjectClassLowering.kt @@ -16,12 +16,12 @@ import org.jetbrains.kotlin.backend.konan.descriptors.synthesizedName import org.jetbrains.kotlin.backend.konan.ir.buildSimpleAnnotation import org.jetbrains.kotlin.backend.konan.ir.isAny import org.jetbrains.kotlin.backend.konan.ir.isUnit -import org.jetbrains.kotlin.backend.konan.isObjCClass import org.jetbrains.kotlin.descriptors.DescriptorVisibilities import org.jetbrains.kotlin.ir.builders.* import org.jetbrains.kotlin.ir.builders.declarations.* import org.jetbrains.kotlin.ir.declarations.* import org.jetbrains.kotlin.ir.expressions.* +import org.jetbrains.kotlin.ir.objcinterop.* import org.jetbrains.kotlin.ir.util.* import org.jetbrains.kotlin.ir.util.irCall diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/ReflectionSupport.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/ReflectionSupport.kt index dea71374ca4..ca56ad29d59 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/ReflectionSupport.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/ReflectionSupport.kt @@ -7,7 +7,7 @@ package org.jetbrains.kotlin.backend.konan.lower import org.jetbrains.kotlin.backend.konan.KonanBackendContext import org.jetbrains.kotlin.backend.konan.ir.getSuperClassNotAny -import org.jetbrains.kotlin.backend.konan.isObjCClass +import org.jetbrains.kotlin.ir.objcinterop.isObjCClass import org.jetbrains.kotlin.backend.konan.llvm.computeFullName import org.jetbrains.kotlin.backend.konan.reportCompilationError import org.jetbrains.kotlin.ir.IrElement diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/SpecialBackendChecksTraversal.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/SpecialBackendChecksTraversal.kt index 4e0796f0c47..e95a4d50f0c 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/SpecialBackendChecksTraversal.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/SpecialBackendChecksTraversal.kt @@ -26,6 +26,7 @@ import org.jetbrains.kotlin.ir.IrElement import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI import org.jetbrains.kotlin.ir.declarations.* import org.jetbrains.kotlin.ir.expressions.* +import org.jetbrains.kotlin.ir.objcinterop.* import org.jetbrains.kotlin.ir.symbols.IrSimpleFunctionSymbol import org.jetbrains.kotlin.ir.symbols.IrTypeParameterSymbol import org.jetbrains.kotlin.ir.types.* diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/TypeOperatorLowering.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/TypeOperatorLowering.kt index 1252d038794..cde44ea34d6 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/TypeOperatorLowering.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/TypeOperatorLowering.kt @@ -8,7 +8,7 @@ package org.jetbrains.kotlin.backend.konan.lower import org.jetbrains.kotlin.backend.common.CommonBackendContext import org.jetbrains.kotlin.backend.common.FileLoweringPass import org.jetbrains.kotlin.backend.common.lower.* -import org.jetbrains.kotlin.backend.konan.isObjCForwardDeclaration +import org.jetbrains.kotlin.ir.objcinterop.isObjCForwardDeclaration import org.jetbrains.kotlin.ir.builders.* import org.jetbrains.kotlin.ir.declarations.IrFile import org.jetbrains.kotlin.ir.expressions.IrExpression diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/objcexport/ObjCExportHeaderGenerator.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/objcexport/ObjCExportHeaderGenerator.kt index ca68b3297c1..4ecd9e43da4 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/objcexport/ObjCExportHeaderGenerator.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/objcexport/ObjCExportHeaderGenerator.kt @@ -14,6 +14,7 @@ import org.jetbrains.kotlin.builtins.KotlinBuiltIns.isAny import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.descriptors.annotations.AnnotationDescriptor import org.jetbrains.kotlin.descriptors.annotations.Annotations +import org.jetbrains.kotlin.ir.objcinterop.* import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.resolve.constants.ArrayValue import org.jetbrains.kotlin.resolve.constants.KClassValue diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/objcexport/ObjCExportMapper.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/objcexport/ObjCExportMapper.kt index d4bf34d0e11..8375679bfa1 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/objcexport/ObjCExportMapper.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/objcexport/ObjCExportMapper.kt @@ -13,6 +13,7 @@ import org.jetbrains.kotlin.backend.konan.descriptors.isInterface import org.jetbrains.kotlin.builtins.* import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.incremental.components.NoLookupLocation +import org.jetbrains.kotlin.ir.objcinterop.* import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.resolve.DataClassResolver import org.jetbrains.kotlin.resolve.deprecation.DeprecationInfo diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/optimizations/DataFlowIR.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/optimizations/DataFlowIR.kt index b83ef3cac83..ae15c1496bd 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/optimizations/DataFlowIR.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/optimizations/DataFlowIR.kt @@ -21,6 +21,7 @@ import org.jetbrains.kotlin.ir.IrElement import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI import org.jetbrains.kotlin.ir.declarations.* import org.jetbrains.kotlin.ir.expressions.* +import org.jetbrains.kotlin.ir.objcinterop.* import org.jetbrains.kotlin.ir.types.IrType import org.jetbrains.kotlin.ir.types.getClass import org.jetbrains.kotlin.ir.types.isNothing diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/serialization/KonanMangler.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/serialization/KonanMangler.kt index b98096f1f48..c14e2ab3a2f 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/serialization/KonanMangler.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/serialization/KonanMangler.kt @@ -13,6 +13,7 @@ import org.jetbrains.kotlin.backend.konan.* import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI import org.jetbrains.kotlin.ir.declarations.* +import org.jetbrains.kotlin.ir.objcinterop.* import org.jetbrains.kotlin.ir.types.getClass import org.jetbrains.kotlin.ir.util.hasAnnotation diff --git a/settings.gradle b/settings.gradle index a6916a24d1f..b287e9a0a7e 100644 --- a/settings.gradle +++ b/settings.gradle @@ -64,6 +64,7 @@ include ":benchmarks", ":compiler:ir.tree:tree-generator", ":compiler:ir.psi2ir", ":compiler:ir.ir2cfg", + ":compiler:ir.objcinterop", ":compiler:ir.backend.common", ":compiler:ir.serialization.common", ":compiler:ir.serialization.jvm", @@ -672,6 +673,7 @@ project(':compiler:ir.tree').projectDir = "$rootDir/compiler/ir/ir.tree" as File project(':compiler:ir.tree:tree-generator').projectDir = "$rootDir/compiler/ir/ir.tree/tree-generator" as File project(':compiler:ir.psi2ir').projectDir = "$rootDir/compiler/ir/ir.psi2ir" as File project(':compiler:ir.ir2cfg').projectDir = "$rootDir/compiler/ir/ir.ir2cfg" as File +project(':compiler:ir.objcinterop').projectDir = "$rootDir/compiler/ir/ir.objcinterop" as File project(':compiler:ir.backend.common').projectDir = "$rootDir/compiler/ir/backend.common" as File project(':compiler:backend.js').projectDir = "$rootDir/compiler/ir/backend.js" as File project(':compiler:backend.wasm').projectDir = "$rootDir/compiler/ir/backend.wasm" as File