FIR: PrimitiveTypes -> StandardTypes

This commit is contained in:
Tianyu Geng
2021-08-13 09:38:48 -07:00
committed by TeamCityServer
parent 5a26e79b08
commit 68f14fdd87
3 changed files with 8 additions and 8 deletions
@@ -5,7 +5,7 @@
package org.jetbrains.kotlin.fir.analysis.jvm.checkers.expression
import org.jetbrains.kotlin.fir.PrimitiveTypes
import org.jetbrains.kotlin.fir.StandardTypes
import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext
import org.jetbrains.kotlin.fir.analysis.checkers.expression.FirFunctionCallChecker
import org.jetbrains.kotlin.fir.analysis.diagnostics.DiagnosticReporter
@@ -163,7 +163,7 @@ object FirJavaGenericVarianceViolationTypeChecker : FirFunctionCallChecker() {
return when (this) {
is ConeKotlinTypeProjectionOut -> if (positive) type else this
is ConeKotlinTypeProjectionIn -> ConeKotlinTypeProjectionIn(type.removeOutProjection(!positive))
is ConeStarProjection -> if (positive) PrimitiveTypes.Any else this
is ConeStarProjection -> if (positive) StandardTypes.Any else this
// Don't remove nested projections for types at invariant position.
is ConeKotlinTypeConflictingProjection,
is ConeKotlinType -> this
@@ -42,17 +42,17 @@ private fun leastCommonPrimitiveNumericType(t1: ConeClassLikeType, t2: ConeClass
val pt2 = t2.promoteIntegerTypeToIntIfRequired()
return when {
pt1.isDouble() || pt2.isDouble() -> PrimitiveTypes.Double
pt1.isFloat() || pt2.isFloat() -> PrimitiveTypes.Float
pt1.isLong() || pt2.isLong() -> PrimitiveTypes.Long
pt1.isInt() || pt2.isInt() -> PrimitiveTypes.Int
pt1.isDouble() || pt2.isDouble() -> StandardTypes.Double
pt1.isFloat() || pt2.isFloat() -> StandardTypes.Float
pt1.isLong() || pt2.isLong() -> StandardTypes.Long
pt1.isInt() || pt2.isInt() -> StandardTypes.Int
else -> error("Unexpected types: t1=$t1, t2=$t2")
}
}
private fun ConeClassLikeType.promoteIntegerTypeToIntIfRequired(): ConeClassLikeType =
when (lookupTag.classId) {
StandardClassIds.Byte, StandardClassIds.Short -> PrimitiveTypes.Int
StandardClassIds.Byte, StandardClassIds.Short -> StandardTypes.Int
StandardClassIds.Long, StandardClassIds.Int, StandardClassIds.Float, StandardClassIds.Double, StandardClassIds.Char -> this
else -> error("Primitive number type expected: $this")
}
@@ -14,7 +14,7 @@ import org.jetbrains.kotlin.fir.types.impl.ConeClassLikeTypeImpl
import org.jetbrains.kotlin.name.ClassId
import org.jetbrains.kotlin.name.StandardClassIds
object PrimitiveTypes {
object StandardTypes {
val Boolean: ConeClassLikeType = StandardClassIds.Boolean.createType()
val Char: ConeClassLikeType = StandardClassIds.Char.createType()
val Byte: ConeClassLikeType = StandardClassIds.Byte.createType()