[FIR] Refactor val FirElement.calleeReference utility

1. Convert it to `toReference()` function to make it consistent with other
   similar utilities
2. Provide the proper implementation

^KT-64975
This commit is contained in:
Dmitriy Novozhilov
2024-01-17 16:17:42 +02:00
committed by Space Team
parent 36958d585f
commit bd9cb2b7e0
21 changed files with 42 additions and 35 deletions
@@ -114,7 +114,7 @@ class FirCallResolver(
val resultFunctionCall = if (candidate != null && candidate.callInfo != result.info) {
// This branch support case for the call of the type `a.invoke()`
// 1. Handle candidate for `a`
(resolvedReceiver?.calleeReference as? FirNamedReferenceWithCandidate)?.candidate?.updateSourcesOfReceivers()
(resolvedReceiver?.toReference() as? FirNamedReferenceWithCandidate)?.candidate?.updateSourcesOfReceivers()
// 2. Handle candidate for `invoke`
candidate.updateSourcesOfReceivers()
functionCall.copyAsImplicitInvokeCall {
@@ -533,7 +533,7 @@ private fun getExpectedTypeWithImplicitIntegerCoercion(
if (argument.isIntegerLiteralOrOperatorCall()) {
argument.resolvedType
} else {
argument.calleeReference?.toResolvedCallableSymbol()?.takeIf {
argument.toReference()?.toResolvedCallableSymbol()?.takeIf {
it.rawStatus.isConst && it.isMarkedWithImplicitIntegerCoercion
}?.resolvedReturnType
}
@@ -785,7 +785,7 @@ internal object CheckHiddenDeclaration : ResolutionStage() {
}
private fun FirElement.isSuperCall(): Boolean =
this is FirQualifiedAccessExpression && explicitReceiver?.calleeReference is FirSuperReference
this is FirQualifiedAccessExpression && explicitReceiver?.toReference() is FirSuperReference
private fun FirCallableSymbol<*>.isHidden(isSuperCall: Boolean): Boolean {
val fir = fir
@@ -591,7 +591,7 @@ open class FirExpressionsResolveTransformer(transformer: FirAbstractBodyResolveT
val generator = GeneratorOfPlusAssignCalls(
assignmentOperatorStatement,
assignmentOperatorStatement.calleeReference?.source,
assignmentOperatorStatement.toReference()?.source,
operation,
leftArgument,
rightArgument
@@ -213,7 +213,7 @@ abstract class AbstractFirSpecificAnnotationResolveTransformer(
// If fully qualified, check that given package name matches the resolved one.
val segments = generateSequence(receiver.explicitReceiver) { (it as? FirQualifiedAccessExpression)?.explicitReceiver }
.mapNotNull { (it.calleeReference as? FirSimpleNamedReference)?.name?.identifier }
.mapNotNull { (it.toReference() as? FirSimpleNamedReference)?.name?.identifier }
.toList()
if (segments.isNotEmpty() && FqName.fromSegments(segments.asReversed()) != symbol.classId.packageFqName) {