FIR2IR: Drop the-same-value property from ConversionTypeContext

This commit is contained in:
Denis.Zharkov
2023-02-14 08:26:51 +01:00
committed by Space Team
parent e107de6f36
commit 45eefab811
4 changed files with 7 additions and 18 deletions
@@ -32,7 +32,6 @@ import org.jetbrains.kotlin.fir.resolve.providers.FirProvider
import org.jetbrains.kotlin.fir.resolve.providers.symbolProvider import org.jetbrains.kotlin.fir.resolve.providers.symbolProvider
import org.jetbrains.kotlin.fir.scopes.FirTypeScope import org.jetbrains.kotlin.fir.scopes.FirTypeScope
import org.jetbrains.kotlin.fir.scopes.ProcessorAction import org.jetbrains.kotlin.fir.scopes.ProcessorAction
import org.jetbrains.kotlin.fir.scopes.impl.importedFromObjectOrStaticData
import org.jetbrains.kotlin.fir.scopes.unsubstitutedScope import org.jetbrains.kotlin.fir.scopes.unsubstitutedScope
import org.jetbrains.kotlin.fir.symbols.ConeClassLikeLookupTag import org.jetbrains.kotlin.fir.symbols.ConeClassLikeLookupTag
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
@@ -103,35 +102,26 @@ internal enum class ConversionTypeOrigin {
} }
class ConversionTypeContext internal constructor( class ConversionTypeContext internal constructor(
internal val definitelyNotNull: Boolean,
internal val invariantProjection: Boolean = false, internal val invariantProjection: Boolean = false,
internal val origin: ConversionTypeOrigin = ConversionTypeOrigin.DEFAULT, internal val origin: ConversionTypeOrigin = ConversionTypeOrigin.DEFAULT,
) { ) {
fun definitelyNotNull() = ConversionTypeContext(
definitelyNotNull = true,
invariantProjection = invariantProjection,
origin = origin
)
fun inSetter() = ConversionTypeContext( fun inSetter() = ConversionTypeContext(
definitelyNotNull = definitelyNotNull,
invariantProjection = invariantProjection, invariantProjection = invariantProjection,
origin = ConversionTypeOrigin.SETTER origin = ConversionTypeOrigin.SETTER
) )
fun withInvariantProjections() = ConversionTypeContext( fun withInvariantProjections() = ConversionTypeContext(
definitelyNotNull = definitelyNotNull,
invariantProjection = true, invariantProjection = true,
origin = origin origin = origin
) )
companion object { companion object {
internal val DEFAULT = ConversionTypeContext( internal val DEFAULT = ConversionTypeContext(
definitelyNotNull = false, origin = ConversionTypeOrigin.DEFAULT, invariantProjection = false invariantProjection = false, origin = ConversionTypeOrigin.DEFAULT
) )
internal val WITH_INVARIANT = DEFAULT.withInvariantProjections() internal val WITH_INVARIANT = DEFAULT.withInvariantProjections()
internal val IN_SETTER = ConversionTypeContext( internal val IN_SETTER = ConversionTypeContext(
definitelyNotNull = false, origin = ConversionTypeOrigin.SETTER, invariantProjection = false invariantProjection = false, origin = ConversionTypeOrigin.SETTER
) )
} }
} }
@@ -332,7 +332,6 @@ class Fir2IrDeclarationStorage(
} }
val forSetter = function is FirPropertyAccessor && function.isSetter val forSetter = function is FirPropertyAccessor && function.isSetter
val typeContext = ConversionTypeContext( val typeContext = ConversionTypeContext(
definitelyNotNull = false,
origin = if (forSetter) ConversionTypeOrigin.SETTER else ConversionTypeOrigin.DEFAULT origin = if (forSetter) ConversionTypeOrigin.SETTER else ConversionTypeOrigin.DEFAULT
) )
if (function is FirDefaultPropertySetter) { if (function is FirDefaultPropertySetter) {
@@ -728,7 +727,6 @@ class Fir2IrDeclarationStorage(
with(classifierStorage) { with(classifierStorage) {
setTypeParameters( setTypeParameters(
property, ConversionTypeContext( property, ConversionTypeContext(
definitelyNotNull = false,
origin = if (isSetter) ConversionTypeOrigin.SETTER else ConversionTypeOrigin.DEFAULT origin = if (isSetter) ConversionTypeOrigin.SETTER else ConversionTypeOrigin.DEFAULT
) )
) )
@@ -20,7 +20,10 @@ import org.jetbrains.kotlin.ir.symbols.IrClassSymbol
import org.jetbrains.kotlin.ir.types.IrType import org.jetbrains.kotlin.ir.types.IrType
import org.jetbrains.kotlin.ir.types.IrTypeArgument import org.jetbrains.kotlin.ir.types.IrTypeArgument
import org.jetbrains.kotlin.ir.types.IrTypeProjection import org.jetbrains.kotlin.ir.types.IrTypeProjection
import org.jetbrains.kotlin.ir.types.impl.* import org.jetbrains.kotlin.ir.types.impl.IrDynamicTypeImpl
import org.jetbrains.kotlin.ir.types.impl.IrSimpleTypeImpl
import org.jetbrains.kotlin.ir.types.impl.IrStarProjectionImpl
import org.jetbrains.kotlin.ir.types.impl.makeTypeProjection
import org.jetbrains.kotlin.ir.types.makeNotNull import org.jetbrains.kotlin.ir.types.makeNotNull
import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.name.ClassId
import org.jetbrains.kotlin.name.StandardClassIds import org.jetbrains.kotlin.name.StandardClassIds
@@ -158,7 +161,7 @@ class Fir2IrTypeConverter(
val approximatedType = approximateType(expandedType) val approximatedType = approximateType(expandedType)
IrSimpleTypeImpl( IrSimpleTypeImpl(
irSymbol, irSymbol,
hasQuestionMark = !typeContext.definitelyNotNull && approximatedType.isMarkedNullable, hasQuestionMark = approximatedType.isMarkedNullable,
arguments = approximatedType.typeArguments.map { it.toIrTypeArgument(typeContext) }, arguments = approximatedType.typeArguments.map { it.toIrTypeArgument(typeContext) },
annotations = typeAnnotations annotations = typeAnnotations
) )
@@ -179,7 +179,6 @@ class Fir2IrLazyProperty(
with(classifierStorage) { with(classifierStorage) {
setTypeParameters( setTypeParameters(
this@Fir2IrLazyProperty.fir, ConversionTypeContext( this@Fir2IrLazyProperty.fir, ConversionTypeContext(
definitelyNotNull = false,
origin = ConversionTypeOrigin.DEFAULT origin = ConversionTypeOrigin.DEFAULT
) )
) )
@@ -212,7 +211,6 @@ class Fir2IrLazyProperty(
with(classifierStorage) { with(classifierStorage) {
setTypeParameters( setTypeParameters(
this@Fir2IrLazyProperty.fir, ConversionTypeContext( this@Fir2IrLazyProperty.fir, ConversionTypeContext(
definitelyNotNull = false,
origin = ConversionTypeOrigin.SETTER origin = ConversionTypeOrigin.SETTER
) )
) )