[FIR] Inline FirExpression.coneTypeUnsafe

#KT-61367
This commit is contained in:
Kirill Rakhman
2023-09-12 17:22:36 +02:00
committed by Space Team
parent 126f2c9440
commit a4fff7c7c0
3 changed files with 4 additions and 7 deletions
@@ -23,8 +23,8 @@ import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirArrayOfCall
import org.jetbrains.kotlin.fir.symbols.impl.FirConstructorSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirConstructorSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirFieldSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirFieldSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol
import org.jetbrains.kotlin.fir.types.ConeKotlinType
import org.jetbrains.kotlin.fir.types.coneType import org.jetbrains.kotlin.fir.types.coneType
import org.jetbrains.kotlin.fir.types.coneTypeUnsafe
import org.jetbrains.kotlin.fir.types.resolvedType import org.jetbrains.kotlin.fir.types.resolvedType
import org.jetbrains.kotlin.fir.visitors.FirDefaultVisitor import org.jetbrains.kotlin.fir.visitors.FirDefaultVisitor
import org.jetbrains.kotlin.types.ConstantValueKind import org.jetbrains.kotlin.types.ConstantValueKind
@@ -120,7 +120,7 @@ internal object FirToConstantValueTransformer : FirDefaultVisitor<ConstantValue<
getClassCall: FirGetClassCall, getClassCall: FirGetClassCall,
data: FirToConstantValueTransformerData data: FirToConstantValueTransformerData
): ConstantValue<*>? { ): ConstantValue<*>? {
return create(getClassCall.argument.coneTypeUnsafe()) return create(getClassCall.argument.resolvedType)
} }
override fun visitQualifiedAccessExpression( override fun visitQualifiedAccessExpression(
@@ -263,7 +263,7 @@ internal object FirToConstantValueChecker : FirDefaultVisitor<Boolean, FirSessio
override fun visitAnnotationCall(annotationCall: FirAnnotationCall, data: FirSession): Boolean = true override fun visitAnnotationCall(annotationCall: FirAnnotationCall, data: FirSession): Boolean = true
override fun visitGetClassCall(getClassCall: FirGetClassCall, data: FirSession): Boolean { override fun visitGetClassCall(getClassCall: FirGetClassCall, data: FirSession): Boolean {
return create(getClassCall.argument.coneTypeUnsafe()) != null return create(getClassCall.argument.resolvedType) != null
} }
override fun visitQualifiedAccessExpression(qualifiedAccessExpression: FirQualifiedAccessExpression, data: FirSession): Boolean { override fun visitQualifiedAccessExpression(qualifiedAccessExpression: FirQualifiedAccessExpression, data: FirSession): Boolean {
@@ -284,7 +284,7 @@ private fun FirCallableSymbol<*>.toSymbolForCall(
fun FirConstExpression<*>.getIrConstKind(): IrConstKind<*> = when (kind) { fun FirConstExpression<*>.getIrConstKind(): IrConstKind<*> = when (kind) {
ConstantValueKind.IntegerLiteral, ConstantValueKind.UnsignedIntegerLiteral -> { ConstantValueKind.IntegerLiteral, ConstantValueKind.UnsignedIntegerLiteral -> {
val type = coneTypeUnsafe<ConeIntegerLiteralType>() val type = resolvedType as ConeIntegerLiteralType
type.getApproximatedType().toConstKind()!!.toIrConstKind() type.getApproximatedType().toConstKind()!!.toIrConstKind()
} }
@@ -44,9 +44,6 @@ val FirExpression.resolvedType: ConeKotlinType
@UnresolvedExpressionTypeAccess @UnresolvedExpressionTypeAccess
inline fun <reified T : ConeKotlinType> FirExpression.coneTypeSafe(): T? = (coneTypeOrNull as? T) inline fun <reified T : ConeKotlinType> FirExpression.coneTypeSafe(): T? = (coneTypeOrNull as? T)
@OptIn(UnresolvedExpressionTypeAccess::class)
inline fun <reified T : ConeKotlinType> FirExpression.coneTypeUnsafe(): T = coneTypeOrNull as T
@OptIn(UnresolvedExpressionTypeAccess::class) @OptIn(UnresolvedExpressionTypeAccess::class)
val FirExpression.isResolved: Boolean get() = coneTypeOrNull != null val FirExpression.isResolved: Boolean get() = coneTypeOrNull != null