FIR: ensure STATUS resolve phase before reading valueClassRepresentation
This commit is contained in:
committed by
Ilya Kirillov
parent
542ca68aba
commit
7f6cad6fb3
-2
@@ -1,2 +0,0 @@
|
||||
KtType: MyInt
|
||||
PsiType: PsiType:int
|
||||
+1
-1
@@ -1,2 +1,2 @@
|
||||
KtType: MyInt
|
||||
PsiType: PsiType:MyInt
|
||||
PsiType: PsiType:int
|
||||
|
||||
@@ -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 {
|
||||
|
||||
+2
-1
@@ -11,6 +11,7 @@ import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.caches.firCachesFactory
|
||||
import org.jetbrains.kotlin.fir.declarations.*
|
||||
import org.jetbrains.kotlin.fir.declarations.impl.FirResolvedDeclarationStatusImpl
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.isInline
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.isLocal
|
||||
import org.jetbrains.kotlin.fir.expressions.FirBlock
|
||||
import org.jetbrains.kotlin.fir.expressions.FirStatement
|
||||
@@ -111,7 +112,7 @@ open class FirStatusResolveTransformer(
|
||||
*/
|
||||
if (computationStatus != StatusComputationSession.StatusComputationStatus.Computed) {
|
||||
regularClass.transformStatus(this, statusResolver.resolveStatus(regularClass, containingClass, isLocal = false))
|
||||
if (regularClass.status.isInline) {
|
||||
if (regularClass.isInline) {
|
||||
regularClass.valueClassRepresentation = computeValueClassRepresentation(regularClass, session)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user