[FIR] Update FIR utilities
#KT-61367
This commit is contained in:
committed by
Space Team
parent
a49fdeb05b
commit
5d6affc38d
@@ -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(
|
||||||
|
|||||||
Reference in New Issue
Block a user