[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 ->
// val <receiver> = x
@OptIn(UnresolvedExpressionTypeAccess::class)
generateTemporaryVariable(
moduleData = session.moduleData,
source = source,
@@ -1198,10 +1198,12 @@ class FirRenderer(
}
override fun visitResolvedReifiedParameterReference(resolvedReifiedParameterReference: FirResolvedReifiedParameterReference) {
@OptIn(UnresolvedExpressionTypeAccess::class)
renderType(resolvedReifiedParameterReference.coneTypeOrNull)
}
override fun visitInaccessibleReceiverExpression(inaccessibleReceiverExpression: FirInaccessibleReceiverExpression) {
@OptIn(UnresolvedExpressionTypeAccess::class)
renderType(inaccessibleReceiverExpression.coneTypeOrNull)
visitElement(inaccessibleReceiverExpression)
}
@@ -5,10 +5,7 @@
package org.jetbrains.kotlin.fir.types
import org.jetbrains.kotlin.fir.expressions.FirAnnotation
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.expressions.*
import org.jetbrains.kotlin.fir.types.impl.FirImplicitBuiltinTypeRef
import org.jetbrains.kotlin.fir.utils.exceptions.withFirEntry
import org.jetbrains.kotlin.name.ClassId
@@ -37,10 +34,17 @@ val FirTypeRef.coneType: ConeKotlinType
val FirTypeRef.coneTypeOrNull: ConeKotlinType?
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)
@OptIn(UnresolvedExpressionTypeAccess::class)
inline fun <reified T : ConeKotlinType> FirExpression.coneTypeUnsafe(): T = coneTypeOrNull as T
@RequiresOptIn(