[FIR] Replace static cone types for integers with default classIds in ILT

This commit is contained in:
Dmitriy Novozhilov
2019-12-12 10:33:56 +03:00
parent c6b9593157
commit 4faa2c0c2c
6 changed files with 83 additions and 67 deletions
@@ -17,17 +17,17 @@ class ConeIntegerLiteralTypeImpl : ConeIntegerLiteralType {
constructor(value: Long) : super(value) {
possibleTypes = mutableListOf()
fun checkBoundsAndAddPossibleType(type: ConeClassLikeType, range: LongRange) {
fun checkBoundsAndAddPossibleType(classId: ClassId, range: LongRange) {
if (value in range) {
possibleTypes.add(type)
possibleTypes.add(createType(classId))
}
}
fun addSignedPossibleTypes() {
checkBoundsAndAddPossibleType(INT_TYPE, INT_RANGE)
possibleTypes += LONG_TYPE
checkBoundsAndAddPossibleType(BYTE_TYPE, BYTE_RANGE)
checkBoundsAndAddPossibleType(SHORT_TYPE, SHORT_RANGE)
checkBoundsAndAddPossibleType(StandardClassIds.Int, INT_RANGE)
possibleTypes += createType(StandardClassIds.Long)
checkBoundsAndAddPossibleType(StandardClassIds.Byte, BYTE_RANGE)
checkBoundsAndAddPossibleType(StandardClassIds.Short, SHORT_RANGE)
}
addSignedPossibleTypes()
@@ -53,15 +53,10 @@ class ConeIntegerLiteralTypeImpl : ConeIntegerLiteralType {
}
companion object {
private fun createType(classId: ClassId): ConeClassLikeType {
fun createType(classId: ClassId): ConeClassLikeType {
return ConeClassLikeTypeImpl(ConeClassLikeLookupTagImpl(classId), emptyArray(), false)
}
val INT_TYPE = createType(StandardClassIds.Int)
val LONG_TYPE = createType(StandardClassIds.Long)
val SHORT_TYPE = createType(StandardClassIds.Short)
val BYTE_TYPE = createType(StandardClassIds.Byte)
private val NUMBER_TYPE = createType(StandardClassIds.Number)
private val INT_RANGE = Int.MIN_VALUE.toLong()..Int.MAX_VALUE.toLong()