FIR: Avoid creating new stub type constructors on nullability replacing

This commit is contained in:
Simon Ogorodnik
2021-11-15 16:44:17 +03:00
committed by teamcity
parent 61ea65906c
commit 3fadf1cb46
2 changed files with 21 additions and 6 deletions
@@ -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)