FIR2IR: Drop the-same-value property from ConversionTypeContext
This commit is contained in:
committed by
Space Team
parent
e107de6f36
commit
45eefab811
@@ -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
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user