FIR: Avoid creating new stub type constructors on nullability replacing
This commit is contained in:
committed by
teamcity
parent
61ea65906c
commit
3fadf1cb46
@@ -353,10 +353,25 @@ sealed class ConeStubType(val constructor: ConeStubTypeConstructor, override val
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
open class ConeStubTypeForBuilderInference(variable: ConeTypeVariable, nullability: ConeNullability) :
|
open class ConeStubTypeForBuilderInference(constructor: ConeStubTypeConstructor, nullability: ConeNullability) :
|
||||||
ConeStubType(ConeStubTypeConstructor(variable, isTypeVariableInSubtyping = false), nullability)
|
ConeStubType(constructor, nullability) {
|
||||||
class ConeStubTypeForTypeVariableInSubtyping(variable: ConeTypeVariable, nullability: ConeNullability) :
|
constructor(variable: ConeTypeVariable, nullability: ConeNullability) : this(
|
||||||
ConeStubType(ConeStubTypeConstructor(variable, isTypeVariableInSubtyping = true), nullability)
|
ConeStubTypeConstructor(
|
||||||
|
variable,
|
||||||
|
isTypeVariableInSubtyping = false
|
||||||
|
), nullability
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
class ConeStubTypeForTypeVariableInSubtyping(constructor: ConeStubTypeConstructor, nullability: ConeNullability) :
|
||||||
|
ConeStubType(constructor, nullability) {
|
||||||
|
constructor(variable: ConeTypeVariable, nullability: ConeNullability) : this(
|
||||||
|
ConeStubTypeConstructor(
|
||||||
|
variable,
|
||||||
|
isTypeVariableInSubtyping = true
|
||||||
|
), nullability
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
open class ConeTypeVariable(name: String, originalTypeParameter: TypeParameterMarker? = null) : TypeVariableMarker {
|
open class ConeTypeVariable(name: String, originalTypeParameter: TypeParameterMarker? = null) : TypeVariableMarker {
|
||||||
val typeConstructor = ConeTypeVariableTypeConstructor(name, originalTypeParameter)
|
val typeConstructor = ConeTypeVariableTypeConstructor(name, originalTypeParameter)
|
||||||
|
|||||||
@@ -165,8 +165,8 @@ fun <T : ConeKotlinType> T.withNullability(
|
|||||||
ConeNullability.UNKNOWN -> this // TODO: is that correct?
|
ConeNullability.UNKNOWN -> this // TODO: is that correct?
|
||||||
ConeNullability.NOT_NULL -> this
|
ConeNullability.NOT_NULL -> this
|
||||||
}
|
}
|
||||||
is ConeStubTypeForBuilderInference -> ConeStubTypeForBuilderInference(constructor.variable, nullability)
|
is ConeStubTypeForBuilderInference -> ConeStubTypeForBuilderInference(constructor, nullability)
|
||||||
is ConeStubTypeForTypeVariableInSubtyping -> ConeStubTypeForTypeVariableInSubtyping(constructor.variable, nullability)
|
is ConeStubTypeForTypeVariableInSubtyping -> ConeStubTypeForTypeVariableInSubtyping(constructor, nullability)
|
||||||
is ConeDefinitelyNotNullType -> when (nullability) {
|
is ConeDefinitelyNotNullType -> when (nullability) {
|
||||||
ConeNullability.NOT_NULL -> this
|
ConeNullability.NOT_NULL -> this
|
||||||
ConeNullability.NULLABLE -> original.withNullability(nullability, typeContext)
|
ConeNullability.NULLABLE -> original.withNullability(nullability, typeContext)
|
||||||
|
|||||||
Reference in New Issue
Block a user