diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/Arguments.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/Arguments.kt index 8c44f81e521..776bc23e24d 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/Arguments.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/Arguments.kt @@ -10,6 +10,7 @@ import org.jetbrains.kotlin.fir.declarations.FirAnonymousFunction import org.jetbrains.kotlin.fir.declarations.FirSimpleFunction import org.jetbrains.kotlin.fir.declarations.FirValueParameter import org.jetbrains.kotlin.fir.expressions.* +import org.jetbrains.kotlin.fir.references.FirResolvedNamedReference import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.firUnsafe import org.jetbrains.kotlin.fir.resolve.withNullability import org.jetbrains.kotlin.fir.returnExpressions @@ -46,8 +47,19 @@ fun Candidate.resolveArgumentExpression( isSafeCall, typeProvider ) - // TODO:! - is FirCallableReferenceAccess -> preprocessCallableReference(argument, expectedType) + is FirCallableReferenceAccess -> + if (argument.calleeReference is FirResolvedNamedReference) + resolvePlainExpressionArgument( + csBuilder, + argument, + expectedType, + sink, + isReceiver, + isSafeCall, + typeProvider + ) + else + preprocessCallableReference(argument, expectedType) // NB: FirCallableReferenceAccess should be checked earlier is FirQualifiedAccessExpression -> resolvePlainExpressionArgument( csBuilder, 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 563d4422a63..303c09159e3 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 @@ -258,6 +258,10 @@ class FirExpressionsResolveTransformer(transformer: FirBodyResolveTransformer) : callableReferenceAccess: FirCallableReferenceAccess, data: Any? ): CompositeTransformResult { + if (callableReferenceAccess.calleeReference is FirResolvedNamedReference) { + return callableReferenceAccess.compose() + } + val transformedLHS = callableReferenceAccess.explicitReceiver?.transformSingle(this, noExpectedType)