[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
This commit is contained in:
Kirill Rakhman
2024-03-12 14:38:00 +01:00
committed by Space Team
parent 609906a0b1
commit c227e60150
2 changed files with 3 additions and 2 deletions
@@ -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()
@@ -59,7 +59,7 @@ fun test() {
X()
X.<!UNRESOLVED_REFERENCE!>plusAssign<!>("")
X += ""
X <!UNRESOLVED_REFERENCE!>+=<!> ""
X<!NO_GET_METHOD!>[X]<!> += ""
// Must resolve to property