diff --git a/compiler/fir/cones/src/org/jetbrains/kotlin/fir/types/ConeTypes.kt b/compiler/fir/cones/src/org/jetbrains/kotlin/fir/types/ConeTypes.kt index 33d2c46d9b3..3b3ba62197a 100644 --- a/compiler/fir/cones/src/org/jetbrains/kotlin/fir/types/ConeTypes.kt +++ b/compiler/fir/cones/src/org/jetbrains/kotlin/fir/types/ConeTypes.kt @@ -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) diff --git a/compiler/fir/providers/src/org/jetbrains/kotlin/fir/types/TypeUtils.kt b/compiler/fir/providers/src/org/jetbrains/kotlin/fir/types/TypeUtils.kt index a9267885004..db7d0bf334a 100644 --- a/compiler/fir/providers/src/org/jetbrains/kotlin/fir/types/TypeUtils.kt +++ b/compiler/fir/providers/src/org/jetbrains/kotlin/fir/types/TypeUtils.kt @@ -165,8 +165,8 @@ fun 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)