diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirCallResolver.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirCallResolver.kt index 878a85a7059..a30655e8425 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirCallResolver.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirCallResolver.kt @@ -40,7 +40,7 @@ import org.jetbrains.kotlin.fir.symbols.impl.FirNamedFunctionSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol import org.jetbrains.kotlin.fir.types.* import org.jetbrains.kotlin.idea.references.FirReferenceResolveHelper -import org.jetbrains.kotlin.idea.references.readWriteAccess +import org.jetbrains.kotlin.idea.references.readWriteAccessWithFullExpressionWithPossibleResolve import org.jetbrains.kotlin.name.CallableId import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.psi.psiUtil.findAssignment @@ -59,7 +59,11 @@ internal class KtFirCallResolver( when (val fir = call.getOrBuildFir(firResolveState)) { is FirResolvedNamedReference -> { val propertySymbol = fir.resolvedSymbol as? FirPropertySymbol ?: return null - val access = call.readWriteAccess(useResolveForReadWrite = false) + + @Suppress("DEPRECATION") + val access = + call.readWriteAccessWithFullExpressionWithPossibleResolve(readWriteAccessWithFullExpressionByResolve = { null }).first + val setterValue = findAssignment(call)?.right val accessor = when { access.isWrite -> propertySymbol.setterSymbol?.fir diff --git a/compiler/psi/src/org/jetbrains/kotlin/idea/references/referenceUtils.kt b/compiler/psi/src/org/jetbrains/kotlin/idea/references/referenceUtils.kt index 6fccada43c9..c33c2797a38 100644 --- a/compiler/psi/src/org/jetbrains/kotlin/idea/references/referenceUtils.kt +++ b/compiler/psi/src/org/jetbrains/kotlin/idea/references/referenceUtils.kt @@ -31,12 +31,12 @@ val KtElement.mainReference: KtReference? else -> references.firstIsInstanceOrNull() } -fun KtExpression.readWriteAccess(useResolveForReadWrite: Boolean) = - readWriteAccessWithFullExpression(useResolveForReadWrite).first - -fun KtExpression.readWriteAccessWithFullExpression( - useResolveForReadWrite: Boolean, - readWriteAccessWithFullExpressionByResolve: (KtBinaryExpression) -> Pair? = { null }, +@Deprecated( + "Not for the IDE usage", + replaceWith = ReplaceWith("readWriteAccessWithFullExpression", "org.jetbrains.kotlin.idea.references") +) +fun KtExpression.readWriteAccessWithFullExpressionWithPossibleResolve( + readWriteAccessWithFullExpressionByResolve: (KtBinaryExpression) -> Pair?, ): Pair { var expression = getQualifiedExpressionForSelectorOrThis() loop@ while (true) { @@ -52,7 +52,7 @@ fun KtExpression.readWriteAccessWithFullExpression( KtTokens.EQ -> ReferenceAccess.WRITE to assignment else -> { - (if (useResolveForReadWrite) readWriteAccessWithFullExpressionByResolve(assignment) else null) + readWriteAccessWithFullExpressionByResolve(assignment) ?: (ReferenceAccess.READ_WRITE to assignment) } }