From c0715cfb0c455b087af2cbd3e6fdc43162379936 Mon Sep 17 00:00:00 2001 From: Igor Chevdar Date: Mon, 31 Jan 2022 13:48:14 +0500 Subject: [PATCH] [K/N][IR][caches] Fixed problems with inline classes Fixes https://youtrack.jetbrains.com/issue/KT-50978 --- .../org/jetbrains/kotlin/ir/declarations/lazy/IrLazyClass.kt | 1 + .../src/org/jetbrains/kotlin/backend/konan/InlineClasses.kt | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/lazy/IrLazyClass.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/lazy/IrLazyClass.kt index 7d3bb1c7cbc..e0422f35149 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/lazy/IrLazyClass.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/lazy/IrLazyClass.kt @@ -75,6 +75,7 @@ class IrLazyClass( private fun shouldBuildStub(descriptor: DeclarationDescriptor): Boolean = descriptor !is DeclarationDescriptorWithVisibility || !DescriptorVisibilities.isPrivate(descriptor.visibility) || + // This exception is needed for K/N caches usage. isObject && descriptor is ClassConstructorDescriptor override var typeParameters: List by lazyVar(stubGenerator.lock) { diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/InlineClasses.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/InlineClasses.kt index e7aeeb4eaf6..7fff69f8997 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/InlineClasses.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/InlineClasses.kt @@ -5,6 +5,7 @@ package org.jetbrains.kotlin.backend.konan +import org.jetbrains.kotlin.backend.common.atMostOne import org.jetbrains.kotlin.backend.common.ir.isTopLevel import org.jetbrains.kotlin.backend.konan.descriptors.findPackage import org.jetbrains.kotlin.backend.konan.ir.getSuperClassNotAny @@ -305,7 +306,8 @@ internal object IrTypeInlineClassesSupport : InlineClassesSupport().single { it.backingField != null }.backingField!!.type + ?: clazz.declarations.filterIsInstance().atMostOne { it.backingField != null }?.backingField?.type + ?: clazz.inlineClassRepresentation!!.underlyingType override fun getPackageFqName(clazz: IrClass) = clazz.packageFqName