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) :
|
||||
ConeStubType(ConeStubTypeConstructor(variable, isTypeVariableInSubtyping = false), nullability)
|
||||
class ConeStubTypeForTypeVariableInSubtyping(variable: ConeTypeVariable, nullability: ConeNullability) :
|
||||
ConeStubType(ConeStubTypeConstructor(variable, isTypeVariableInSubtyping = true), nullability)
|
||||
open class ConeStubTypeForBuilderInference(constructor: ConeStubTypeConstructor, nullability: ConeNullability) :
|
||||
ConeStubType(constructor, nullability) {
|
||||
constructor(variable: ConeTypeVariable, nullability: ConeNullability) : this(
|
||||
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 {
|
||||
val typeConstructor = ConeTypeVariableTypeConstructor(name, originalTypeParameter)
|
||||
|
||||
@@ -165,8 +165,8 @@ fun <T : ConeKotlinType> T.withNullability(
|
||||
ConeNullability.UNKNOWN -> this // TODO: is that correct?
|
||||
ConeNullability.NOT_NULL -> this
|
||||
}
|
||||
is ConeStubTypeForBuilderInference -> ConeStubTypeForBuilderInference(constructor.variable, nullability)
|
||||
is ConeStubTypeForTypeVariableInSubtyping -> ConeStubTypeForTypeVariableInSubtyping(constructor.variable, nullability)
|
||||
is ConeStubTypeForBuilderInference -> ConeStubTypeForBuilderInference(constructor, nullability)
|
||||
is ConeStubTypeForTypeVariableInSubtyping -> ConeStubTypeForTypeVariableInSubtyping(constructor, nullability)
|
||||
is ConeDefinitelyNotNullType -> when (nullability) {
|
||||
ConeNullability.NOT_NULL -> this
|
||||
ConeNullability.NULLABLE -> original.withNullability(nullability, typeContext)
|
||||
|
||||
Reference in New Issue
Block a user