diff --git a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/irasdescriptors/NewIrUtils.kt b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/irasdescriptors/NewIrUtils.kt index b19673feed0..ee7bd6ca98e 100644 --- a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/irasdescriptors/NewIrUtils.kt +++ b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/irasdescriptors/NewIrUtils.kt @@ -93,6 +93,7 @@ fun IrClass.getSuperInterfaces() = this.superClasses.map { it.owner }.filter { i val IrProperty.konanBackingField: IrField? get() { + assert(this.isReal) this.backingField?.let { return it } (this.descriptor as? DeserializedPropertyDescriptor)?.backingField?.let { backingFieldDescriptor -> @@ -116,6 +117,10 @@ val IrField.containingClass get() = this.parent as? IrClass val IrFunction.isReal get() = this.origin != IrDeclarationOrigin.FAKE_OVERRIDE +// Note: psi2ir doesn't set `origin = FAKE_OVERRIDE` for fields and properties yet. +val IrProperty.isReal: Boolean get() = this.descriptor.kind.isReal +val IrField.isReal: Boolean get() = this.descriptor.kind.isReal + val IrSimpleFunction.isOverridable: Boolean get() = visibility != Visibilities.PRIVATE && modality != Modality.FINAL diff --git a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/LlvmDeclarations.kt b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/LlvmDeclarations.kt index 4e197fdf4f6..d87b3c340e2 100644 --- a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/LlvmDeclarations.kt +++ b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/LlvmDeclarations.kt @@ -127,8 +127,8 @@ private fun Context.getDeclaredFields(classDescriptor: ClassDescriptor): List it - is IrProperty -> it.konanBackingField + is IrField -> it.takeIf { it.isReal } + is IrProperty -> it.takeIf { it.isReal }?.konanBackingField else -> null } }