FIR: ensure STATUS resolve phase before reading valueClassRepresentation

This commit is contained in:
Jinseong Jeon
2022-10-26 22:58:45 -07:00
committed by Ilya Kirillov
parent 542ca68aba
commit 7f6cad6fb3
4 changed files with 10 additions and 9 deletions
@@ -13,10 +13,7 @@ import org.jetbrains.kotlin.descriptors.ValueClassKind
import org.jetbrains.kotlin.descriptors.valueClassLoweringKind
import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.declarations.*
import org.jetbrains.kotlin.fir.declarations.utils.expandedConeType
import org.jetbrains.kotlin.fir.declarations.utils.isInner
import org.jetbrains.kotlin.fir.declarations.utils.modality
import org.jetbrains.kotlin.fir.declarations.utils.superConeTypes
import org.jetbrains.kotlin.fir.declarations.utils.*
import org.jetbrains.kotlin.fir.expressions.*
import org.jetbrains.kotlin.fir.resolve.directExpansionType
import org.jetbrains.kotlin.fir.resolve.fullyExpandedType
@@ -569,7 +566,12 @@ interface ConeTypeContext : TypeSystemContext, TypeSystemOptimizationContext, Ty
}
override fun TypeConstructorMarker.getValueClassProperties(): List<Pair<Name, SimpleTypeMarker>>? {
return toFirRegularClass()?.valueClassRepresentation?.underlyingPropertyNamesToTypes
val firClass = toFirRegularClass() ?: return null
// NB: [FirRegularClass.valueClassRepresentation] is updated by [FirStatusResolveTransformer].
if (firClass.isInline) {
firClass.symbol.lazyResolveToPhase(FirResolvePhase.STATUS)
}
return firClass.valueClassRepresentation?.underlyingPropertyNamesToTypes
}
override fun TypeConstructorMarker.isInnerClass(): Boolean {