[FIR] Update FIR utilities

#KT-61367
This commit is contained in:
Kirill Rakhman
2023-09-08 17:37:36 +02:00
committed by Space Team
parent a49fdeb05b
commit 5d6affc38d
3 changed files with 12 additions and 5 deletions
@@ -82,6 +82,7 @@ fun generateExplicitReceiverTemporaryVariable(
} }
?.let { receiver -> ?.let { receiver ->
// val <receiver> = x // val <receiver> = x
@OptIn(UnresolvedExpressionTypeAccess::class)
generateTemporaryVariable( generateTemporaryVariable(
moduleData = session.moduleData, moduleData = session.moduleData,
source = source, source = source,
@@ -1198,10 +1198,12 @@ class FirRenderer(
} }
override fun visitResolvedReifiedParameterReference(resolvedReifiedParameterReference: FirResolvedReifiedParameterReference) { override fun visitResolvedReifiedParameterReference(resolvedReifiedParameterReference: FirResolvedReifiedParameterReference) {
@OptIn(UnresolvedExpressionTypeAccess::class)
renderType(resolvedReifiedParameterReference.coneTypeOrNull) renderType(resolvedReifiedParameterReference.coneTypeOrNull)
} }
override fun visitInaccessibleReceiverExpression(inaccessibleReceiverExpression: FirInaccessibleReceiverExpression) { override fun visitInaccessibleReceiverExpression(inaccessibleReceiverExpression: FirInaccessibleReceiverExpression) {
@OptIn(UnresolvedExpressionTypeAccess::class)
renderType(inaccessibleReceiverExpression.coneTypeOrNull) renderType(inaccessibleReceiverExpression.coneTypeOrNull)
visitElement(inaccessibleReceiverExpression) visitElement(inaccessibleReceiverExpression)
} }
@@ -5,10 +5,7 @@
package org.jetbrains.kotlin.fir.types package org.jetbrains.kotlin.fir.types
import org.jetbrains.kotlin.fir.expressions.FirAnnotation import org.jetbrains.kotlin.fir.expressions.*
import org.jetbrains.kotlin.fir.expressions.FirConstExpression
import org.jetbrains.kotlin.fir.expressions.FirExpression
import org.jetbrains.kotlin.fir.expressions.FirSmartCastExpression
import org.jetbrains.kotlin.fir.types.impl.FirImplicitBuiltinTypeRef import org.jetbrains.kotlin.fir.types.impl.FirImplicitBuiltinTypeRef
import org.jetbrains.kotlin.fir.utils.exceptions.withFirEntry import org.jetbrains.kotlin.fir.utils.exceptions.withFirEntry
import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.name.ClassId
@@ -37,10 +34,17 @@ val FirTypeRef.coneType: ConeKotlinType
val FirTypeRef.coneTypeOrNull: ConeKotlinType? val FirTypeRef.coneTypeOrNull: ConeKotlinType?
get() = coneTypeSafe() get() = coneTypeSafe()
val FirExpression.resolvedType: ConeKotlinType get() = requireNotNull(coneTypeOrNull) { "Expected type to be resolved" } @OptIn(UnresolvedExpressionTypeAccess::class)
val FirExpression.resolvedType: ConeKotlinType
get() = coneTypeOrNull
?: errorWithAttachment("Expected expression '${this::class.simpleName}' to be resolved") {
withFirEntry("expression", this@resolvedType)
}
@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 inline fun <reified T : ConeKotlinType> FirExpression.coneTypeUnsafe(): T = coneTypeOrNull as T
@RequiresOptIn( @RequiresOptIn(