Fix usage of readWriteAccess without resolve
^KTIJ-19777 fixed
This commit is contained in:
+6
-2
@@ -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.symbols.impl.FirPropertySymbol
|
||||||
import org.jetbrains.kotlin.fir.types.*
|
import org.jetbrains.kotlin.fir.types.*
|
||||||
import org.jetbrains.kotlin.idea.references.FirReferenceResolveHelper
|
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.name.CallableId
|
||||||
import org.jetbrains.kotlin.psi.*
|
import org.jetbrains.kotlin.psi.*
|
||||||
import org.jetbrains.kotlin.psi.psiUtil.findAssignment
|
import org.jetbrains.kotlin.psi.psiUtil.findAssignment
|
||||||
@@ -59,7 +59,11 @@ internal class KtFirCallResolver(
|
|||||||
when (val fir = call.getOrBuildFir(firResolveState)) {
|
when (val fir = call.getOrBuildFir(firResolveState)) {
|
||||||
is FirResolvedNamedReference -> {
|
is FirResolvedNamedReference -> {
|
||||||
val propertySymbol = fir.resolvedSymbol as? FirPropertySymbol ?: return null
|
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 setterValue = findAssignment(call)?.right
|
||||||
val accessor = when {
|
val accessor = when {
|
||||||
access.isWrite -> propertySymbol.setterSymbol?.fir
|
access.isWrite -> propertySymbol.setterSymbol?.fir
|
||||||
|
|||||||
@@ -31,12 +31,12 @@ val KtElement.mainReference: KtReference?
|
|||||||
else -> references.firstIsInstanceOrNull()
|
else -> references.firstIsInstanceOrNull()
|
||||||
}
|
}
|
||||||
|
|
||||||
fun KtExpression.readWriteAccess(useResolveForReadWrite: Boolean) =
|
@Deprecated(
|
||||||
readWriteAccessWithFullExpression(useResolveForReadWrite).first
|
"Not for the IDE usage",
|
||||||
|
replaceWith = ReplaceWith("readWriteAccessWithFullExpression", "org.jetbrains.kotlin.idea.references")
|
||||||
fun KtExpression.readWriteAccessWithFullExpression(
|
)
|
||||||
useResolveForReadWrite: Boolean,
|
fun KtExpression.readWriteAccessWithFullExpressionWithPossibleResolve(
|
||||||
readWriteAccessWithFullExpressionByResolve: (KtBinaryExpression) -> Pair<ReferenceAccess, KtExpression>? = { null },
|
readWriteAccessWithFullExpressionByResolve: (KtBinaryExpression) -> Pair<ReferenceAccess, KtExpression>?,
|
||||||
): Pair<ReferenceAccess, KtExpression> {
|
): Pair<ReferenceAccess, KtExpression> {
|
||||||
var expression = getQualifiedExpressionForSelectorOrThis()
|
var expression = getQualifiedExpressionForSelectorOrThis()
|
||||||
loop@ while (true) {
|
loop@ while (true) {
|
||||||
@@ -52,7 +52,7 @@ fun KtExpression.readWriteAccessWithFullExpression(
|
|||||||
KtTokens.EQ -> ReferenceAccess.WRITE to assignment
|
KtTokens.EQ -> ReferenceAccess.WRITE to assignment
|
||||||
|
|
||||||
else -> {
|
else -> {
|
||||||
(if (useResolveForReadWrite) readWriteAccessWithFullExpressionByResolve(assignment) else null)
|
readWriteAccessWithFullExpressionByResolve(assignment)
|
||||||
?: (ReferenceAccess.READ_WRITE to assignment)
|
?: (ReferenceAccess.READ_WRITE to assignment)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user