From c227e6015080a1dd5ac256b4faeafa11328be083 Mon Sep 17 00:00:00 2001 From: Kirill Rakhman Date: Tue, 12 Mar 2024 14:38:00 +0100 Subject: [PATCH] [FIR] Fix resolution of LHS of augmented assignment operator call Resolve it like a receiver of a call. This makes the resolution result consistent with the equivalent function call. The K1 difference is covered by KT-66453. #KT-66504 Fixed --- .../body/resolve/FirExpressionsResolveTransformer.kt | 3 ++- .../diagnostics/tests/resolve/operatorAndInfixResolve.fir.kt | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) 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 10ca607d05a..b3b486f5823 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 @@ -629,7 +629,8 @@ open class FirExpressionsResolveTransformer(transformer: FirAbstractBodyResolveT assignmentOperatorStatement.transformAnnotations(transformer, ResolutionMode.ContextIndependent) dataFlowAnalyzer.enterCallArguments(assignmentOperatorStatement, listOf(assignmentOperatorStatement.rightArgument)) - val leftArgument = assignmentOperatorStatement.leftArgument.transformSingle(transformer, ResolutionMode.ContextIndependent) + val leftArgument = assignmentOperatorStatement.leftArgument + .transformAsExplicitReceiver(ResolutionMode.ReceiverResolution, isUsedAsGetClassReceiver = false) val rightArgument = assignmentOperatorStatement.rightArgument.transformSingle(transformer, ResolutionMode.ContextDependent) dataFlowAnalyzer.exitCallArguments() diff --git a/compiler/testData/diagnostics/tests/resolve/operatorAndInfixResolve.fir.kt b/compiler/testData/diagnostics/tests/resolve/operatorAndInfixResolve.fir.kt index 787972dcc39..ac90bfaf376 100644 --- a/compiler/testData/diagnostics/tests/resolve/operatorAndInfixResolve.fir.kt +++ b/compiler/testData/diagnostics/tests/resolve/operatorAndInfixResolve.fir.kt @@ -59,7 +59,7 @@ fun test() { X() X.plusAssign("") - X += "" + X += "" X[X] += "" // Must resolve to property