From ff981a49ad56b02e0e71c875ebf37459260c31dc Mon Sep 17 00:00:00 2001 From: Kirill Rakhman Date: Tue, 12 Mar 2024 14:33:18 +0100 Subject: [PATCH] [FIR] Make return types more precise --- .../org/jetbrains/kotlin/fir/FirCallResolver.kt | 4 ++-- .../resolve/FirExpressionsResolveTransformer.kt | 14 +++++++------- ...tractFirSpecificAnnotationResolveTransformer.kt | 2 +- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/FirCallResolver.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/FirCallResolver.kt index f2b22ab5b3a..86ca680076f 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/FirCallResolver.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/FirCallResolver.kt @@ -243,7 +243,7 @@ class FirCallResolver( isUsedAsGetClassReceiver: Boolean, callSite: FirElement, resolutionMode: ResolutionMode, - ): FirStatement { + ): FirExpression { return resolveVariableAccessAndSelectCandidateImpl( qualifiedAccess, isUsedAsReceiver, @@ -260,7 +260,7 @@ class FirCallResolver( isUsedAsGetClassReceiver: Boolean, callSite: FirElement = qualifiedAccess, acceptCandidates: (Collection) -> Boolean, - ): FirStatement { + ): FirExpression { val callee = qualifiedAccess.calleeReference as? FirSimpleNamedReference ?: return qualifiedAccess @Suppress("NAME_SHADOWING") diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirExpressionsResolveTransformer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirExpressionsResolveTransformer.kt index d73d89220ff..c2d8d010daf 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirExpressionsResolveTransformer.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirExpressionsResolveTransformer.kt @@ -96,7 +96,7 @@ open class FirExpressionsResolveTransformer(transformer: FirAbstractBodyResolveT data: ResolutionMode, isUsedAsReceiver: Boolean, isUsedAsGetClassReceiver: Boolean, - ): FirStatement { + ): FirExpression { if (qualifiedAccessExpression.isResolved && qualifiedAccessExpression.calleeReference !is FirSimpleNamedReference) { return qualifiedAccessExpression } @@ -159,8 +159,8 @@ open class FirExpressionsResolveTransformer(transformer: FirAbstractBodyResolveT data, ) - fun FirStatement.alsoRecordLookup() = also { - if (transformedCallee is FirExpression && transformedCallee.isResolved) { + fun FirExpression.alsoRecordLookup() = also { + if (transformedCallee.isResolved) { session.lookupTracker?.recordTypeResolveAsLookup( transformedCallee.resolvedType, callee.source, components.file.source ) @@ -212,7 +212,7 @@ open class FirExpressionsResolveTransformer(transformer: FirAbstractBodyResolveT qualifiedAccessExpression.replaceExplicitReceiver( transformQualifiedAccessExpression( explicitReceiver, ResolutionMode.ReceiverResolution, isUsedAsReceiver = true, isUsedAsGetClassReceiver = false - ) as FirExpression + ) ) return qualifiedAccessExpression } @@ -233,7 +233,7 @@ open class FirExpressionsResolveTransformer(transformer: FirAbstractBodyResolveT isUsedAsGetClassReceiver: Boolean, callSite: FirElement, data: ResolutionMode, - ): FirStatement { + ): FirExpression { return callResolver.resolveVariableAccessAndSelectCandidate( qualifiedAccessExpression, isUsedAsReceiver, isUsedAsGetClassReceiver, callSite, data ) @@ -1105,7 +1105,7 @@ open class FirExpressionsResolveTransformer(transformer: FirAbstractBodyResolveT is FirPropertyAccessExpression -> transformQualifiedAccessExpression( explicitReceiver, ResolutionMode.ReceiverResolution.ForCallableReference, isUsedAsReceiver = true, isUsedAsGetClassReceiver = false - ) as FirExpression + ) else -> explicitReceiver?.transformSingle(this, ResolutionMode.ReceiverResolution.ForCallableReference) }.apply { @@ -1146,7 +1146,7 @@ open class FirExpressionsResolveTransformer(transformer: FirAbstractBodyResolveT if (argument is FirPropertyAccessExpression) transformQualifiedAccessExpression( argument, dataForLhs, isUsedAsReceiver = true, isUsedAsGetClassReceiver = true - ) as FirExpression + ) else argument.transform(this, dataForLhs) diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/plugin/AbstractFirSpecificAnnotationResolveTransformer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/plugin/AbstractFirSpecificAnnotationResolveTransformer.kt index 77d33bd6540..c822a244366 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/plugin/AbstractFirSpecificAnnotationResolveTransformer.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/plugin/AbstractFirSpecificAnnotationResolveTransformer.kt @@ -191,7 +191,7 @@ abstract class AbstractFirSpecificAnnotationResolveTransformer( isUsedAsGetClassReceiver: Boolean, callSite: FirElement, data: ResolutionMode, - ): FirStatement { + ): FirQualifiedAccessExpression { qualifiedAccessExpression.resolveFromImportScope() return qualifiedAccessExpression }