[FIR] Move reference-related utils from :fir:tree to :fir:semantics
This is needed to gain access to providers functionality in those utilities, which is important for support of FirDeserializedEnumAccessExpression node (see later commits) ^KT-64975
This commit is contained in:
committed by
Space Team
parent
2e5a9b1416
commit
36958d585f
@@ -18,7 +18,6 @@ import org.jetbrains.kotlin.fir.expressions.impl.FirBlockImpl
|
||||
import org.jetbrains.kotlin.fir.expressions.impl.FirResolvedArgumentList
|
||||
import org.jetbrains.kotlin.fir.expressions.impl.FirSingleExpressionBlock
|
||||
import org.jetbrains.kotlin.fir.references.*
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
|
||||
import org.jetbrains.kotlin.fir.types.*
|
||||
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
||||
import org.jetbrains.kotlin.fir.visitors.TransformData
|
||||
@@ -60,24 +59,6 @@ inline val FirCall.resolvedArgumentMapping: LinkedHashMap<FirExpression, FirValu
|
||||
else -> null
|
||||
}
|
||||
|
||||
fun FirExpression.toResolvedCallableReference(): FirResolvedNamedReference? {
|
||||
return toReference()?.resolved
|
||||
}
|
||||
|
||||
fun FirExpression.toReference(): FirReference? {
|
||||
return when (this) {
|
||||
is FirWrappedArgumentExpression -> expression.toResolvedCallableReference()
|
||||
is FirSmartCastExpression -> originalExpression.toReference()
|
||||
is FirDesugaredAssignmentValueReferenceExpression -> expressionRef.value.toReference()
|
||||
is FirResolvable -> calleeReference
|
||||
else -> null
|
||||
}
|
||||
}
|
||||
|
||||
fun FirExpression.toResolvedCallableSymbol(): FirCallableSymbol<*>? {
|
||||
return toResolvedCallableReference()?.resolvedSymbol as? FirCallableSymbol<*>?
|
||||
}
|
||||
|
||||
fun buildErrorLoop(source: KtSourceElement?, diagnostic: ConeDiagnostic): FirErrorLoop {
|
||||
return buildErrorLoop {
|
||||
this.source = source
|
||||
@@ -144,8 +125,6 @@ val FirVariableAssignment.dispatchReceiver: FirExpression? get() = unwrapLValue(
|
||||
|
||||
val FirVariableAssignment.extensionReceiver: FirExpression? get() = unwrapLValue()?.extensionReceiver
|
||||
|
||||
val FirVariableAssignment.calleeReference: FirReference? get() = lValue.toReference()
|
||||
|
||||
val FirVariableAssignment.contextReceiverArguments: List<FirExpression> get() = unwrapLValue()?.contextReceiverArguments ?: emptyList()
|
||||
|
||||
fun FirVariableAssignment.unwrapLValue(): FirQualifiedAccessExpression? {
|
||||
@@ -154,9 +133,6 @@ fun FirVariableAssignment.unwrapLValue(): FirQualifiedAccessExpression? {
|
||||
?: (lValue as? FirDesugaredAssignmentValueReferenceExpression)?.expressionRef?.value as? FirQualifiedAccessExpression
|
||||
}
|
||||
|
||||
val FirElement.calleeReference: FirReference?
|
||||
get() = (this as? FirResolvable)?.calleeReference ?: (this as? FirVariableAssignment)?.calleeReference
|
||||
|
||||
fun FirExpression.unwrapExpression(): FirExpression =
|
||||
when (this) {
|
||||
is FirWhenSubjectExpression -> whenRef.value.subject?.unwrapExpression() ?: this
|
||||
|
||||
Reference in New Issue
Block a user