[NI] Get rid of FE 1.0 types in AbstractTypeApproximator

This commit is contained in:
Dmitriy Novozhilov
2020-08-25 19:05:04 +03:00
parent 527c5a771d
commit b21a0213df
18 changed files with 766 additions and 713 deletions
@@ -12,29 +12,35 @@ import org.jetbrains.kotlin.fir.types.impl.ConeClassLikeTypeImpl
import org.jetbrains.kotlin.name.ClassId
object PrimitiveTypes {
val Boolean = StandardClassIds.Boolean.createType()
val Char = StandardClassIds.Char.createType()
val Byte = StandardClassIds.Byte.createType()
val Short = StandardClassIds.Short.createType()
val Int = StandardClassIds.Int.createType()
val Long = StandardClassIds.Long.createType()
val Float = StandardClassIds.Float.createType()
val Double = StandardClassIds.Double.createType()
val Boolean: ConeClassLikeType = StandardClassIds.Boolean.createType()
val Char: ConeClassLikeType = StandardClassIds.Char.createType()
val Byte: ConeClassLikeType = StandardClassIds.Byte.createType()
val Short: ConeClassLikeType = StandardClassIds.Short.createType()
val Int: ConeClassLikeType = StandardClassIds.Int.createType()
val Long: ConeClassLikeType = StandardClassIds.Long.createType()
val Float: ConeClassLikeType = StandardClassIds.Float.createType()
val Double: ConeClassLikeType = StandardClassIds.Double.createType()
}
private fun ClassId.createType(): ConeClassLikeType =
ConeClassLikeTypeImpl(ConeClassLikeLookupTagImpl(this), emptyArray(), isNullable = false)
fun ConeClassLikeType.isDouble() = lookupTag.classId == StandardClassIds.Double
fun ConeClassLikeType.isFloat() = lookupTag.classId == StandardClassIds.Float
fun ConeClassLikeType.isLong() = lookupTag.classId == StandardClassIds.Long
fun ConeClassLikeType.isInt() = lookupTag.classId == StandardClassIds.Int
fun ConeClassLikeType.isShort() = lookupTag.classId == StandardClassIds.Short
fun ConeClassLikeType.isByte() = lookupTag.classId == StandardClassIds.Byte
fun ConeClassLikeType.isDouble(): Boolean = lookupTag.classId == StandardClassIds.Double
fun ConeClassLikeType.isFloat(): Boolean = lookupTag.classId == StandardClassIds.Float
fun ConeClassLikeType.isLong(): Boolean = lookupTag.classId == StandardClassIds.Long
fun ConeClassLikeType.isInt(): Boolean = lookupTag.classId == StandardClassIds.Int
fun ConeClassLikeType.isShort(): Boolean = lookupTag.classId == StandardClassIds.Short
fun ConeClassLikeType.isByte(): Boolean = lookupTag.classId == StandardClassIds.Byte
private val PRIMITIVE_NUMBER_CLASS_IDS = setOf(
fun ConeClassLikeType.isPrimitiveNumberType(): Boolean = lookupTag.classId in PRIMITIVE_NUMBER_CLASS_IDS
fun ConeClassLikeType.isPrimitiveUnsignedNumberType(): Boolean = lookupTag.classId in PRIMITIVE_UNSIGNED_NUMBER_CLASS_IDS
fun ConeClassLikeType.isPrimitiveNumberOrUnsignedNumberType(): Boolean = isPrimitiveNumberType() || isPrimitiveUnsignedNumberType()
private val PRIMITIVE_NUMBER_CLASS_IDS: Set<ClassId> = setOf(
StandardClassIds.Double, StandardClassIds.Float, StandardClassIds.Long, StandardClassIds.Int,
StandardClassIds.Short, StandardClassIds.Byte
)
fun ConeClassLikeType.isPrimitiveNumberType() = lookupTag.classId in PRIMITIVE_NUMBER_CLASS_IDS
private val PRIMITIVE_UNSIGNED_NUMBER_CLASS_IDS: Set<ClassId> = setOf(
StandardClassIds.ULong, StandardClassIds.UInt, StandardClassIds.UShort, StandardClassIds.UByte
)