[K/N][IR][caches] Fixed problems with inline classes

Fixes https://youtrack.jetbrains.com/issue/KT-50978
This commit is contained in:
Igor Chevdar
2022-01-31 13:48:14 +05:00
parent 949e222305
commit c0715cfb0c
2 changed files with 4 additions and 1 deletions
@@ -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<IrTypeParameter> by lazyVar(stubGenerator.lock) {
@@ -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<IrClass, IrTyp
override fun getInlinedClassUnderlyingType(clazz: IrClass): IrType =
clazz.constructors.firstOrNull { it.isPrimary }?.valueParameters?.single()?.type
?: clazz.declarations.filterIsInstance<IrProperty>().single { it.backingField != null }.backingField!!.type
?: clazz.declarations.filterIsInstance<IrProperty>().atMostOne { it.backingField != null }?.backingField?.type
?: clazz.inlineClassRepresentation!!.underlyingType
override fun getPackageFqName(clazz: IrClass) =
clazz.packageFqName