[FIR] Split TypeUtils from :resolve to :cones and :tree modules

This commit is contained in:
Dmitriy Novozhilov
2020-08-28 11:25:15 +03:00
parent 92ffa4dea9
commit 6ace4164ff
5 changed files with 112 additions and 90 deletions
@@ -7,6 +7,7 @@ package org.jetbrains.kotlin.fir.types
import org.jetbrains.kotlin.fir.types.impl.ConeClassLikeTypeImpl
import org.jetbrains.kotlin.name.ClassId
import org.jetbrains.kotlin.types.Variance
import org.jetbrains.kotlin.utils.SmartSet
import org.jetbrains.kotlin.utils.addToStdlib.safeAs
@@ -40,4 +41,11 @@ fun ConeClassLikeType.withArguments(typeArguments: Array<out ConeTypeProjection>
is ConeClassLikeTypeImpl -> ConeClassLikeTypeImpl(lookupTag, typeArguments, isNullable, attributes)
is ConeClassErrorType -> this
else -> error("Unknown cone type: ${this::class}")
}
}
fun ConeKotlinType.toTypeProjection(variance: Variance): ConeTypeProjection =
when (variance) {
Variance.INVARIANT -> this
Variance.IN_VARIANCE -> ConeKotlinTypeProjectionIn(this)
Variance.OUT_VARIANCE -> ConeKotlinTypeProjectionOut(this)
}