Skip to content

Commit b436ee6

Browse files
committed
Replace some of RESOLVED_CALL & REFERENCE_TARGET usages to resolveToCall
1 parent a7d980a commit b436ee6

File tree

21 files changed

+42
-74
lines changed

21 files changed

+42
-74
lines changed

idea/idea-android/src/org/jetbrains/kotlin/android/AndroidResourceReferenceAnnotator.kt

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,16 +23,13 @@ import com.android.tools.idea.rendering.GutterIconRenderer
2323
import com.android.tools.idea.res.ResourceHelper
2424
import com.intellij.lang.annotation.AnnotationHolder
2525
import com.intellij.lang.annotation.Annotator
26-
import com.intellij.openapi.module.ModuleUtilCore
2726
import com.intellij.psi.PsiElement
2827
import org.jetbrains.android.AndroidColorAnnotator
2928
import org.jetbrains.android.facet.AndroidFacet
3029
import org.jetbrains.kotlin.android.ResourceReferenceAnnotatorUtil.*
31-
import org.jetbrains.kotlin.idea.caches.resolve.analyze
30+
import org.jetbrains.kotlin.idea.caches.resolve.resolveToCall
3231
import org.jetbrains.kotlin.load.java.descriptors.JavaPropertyDescriptor
3332
import org.jetbrains.kotlin.psi.KtReferenceExpression
34-
import org.jetbrains.kotlin.resolve.BindingContext
35-
import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode
3633

3734

3835
class AndroidResourceReferenceAnnotator : Annotator {
@@ -77,5 +74,5 @@ class AndroidResourceReferenceAnnotator : Annotator {
7774
}
7875

7976
private fun KtReferenceExpression.getResourceReferenceTargetDescriptor(): JavaPropertyDescriptor? =
80-
analyze(BodyResolveMode.PARTIAL)[BindingContext.REFERENCE_TARGET, this] as? JavaPropertyDescriptor
77+
resolveToCall()?.resultingDescriptor as? JavaPropertyDescriptor
8178
}

idea/idea-android/src/org/jetbrains/kotlin/android/ParcelableUtil.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import org.jetbrains.kotlin.builtins.PrimitiveType
2626
import org.jetbrains.kotlin.descriptors.ParameterDescriptor
2727
import org.jetbrains.kotlin.descriptors.PropertyDescriptor
2828
import org.jetbrains.kotlin.idea.caches.resolve.analyze
29+
import org.jetbrains.kotlin.idea.caches.resolve.resolveToCall
2930
import org.jetbrains.kotlin.idea.codeInsight.shorten.addToShorteningWaitSet
3031
import org.jetbrains.kotlin.idea.codeInsight.shorten.performDelayedRefactoringRequests
3132
import org.jetbrains.kotlin.idea.intentions.getLeftMostReceiverExpression
@@ -161,7 +162,7 @@ private fun KtExpression.isReadFromParcelPropertyAssignment(): Boolean {
161162
private fun KtExpression.isReadFromParcel(): Boolean {
162163
val reference = firstChild as? KtReferenceExpression
163164
?: (firstChild as? KtDotQualifiedExpression)?.getLeftMostReceiverExpression() as? KtReferenceExpression ?: return false
164-
val target = reference.analyze(BodyResolveMode.PARTIAL)[BindingContext.REFERENCE_TARGET, reference] ?: return false
165+
val target = reference.resolveToCall()?.resultingDescriptor ?: return false
165166
return (target as? ParameterDescriptor)?.type?.fqNameEquals(CLASS_PARCEL) ?: false
166167
}
167168

idea/src/org/jetbrains/kotlin/idea/codeInliner/UsageReplacementStrategy.kt

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ import com.intellij.psi.search.searches.ReferencesSearch
2929
import com.intellij.ui.GuiUtils
3030
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
3131
import org.jetbrains.kotlin.descriptors.FunctionDescriptor
32-
import org.jetbrains.kotlin.idea.caches.resolve.analyze
32+
import org.jetbrains.kotlin.idea.caches.resolve.resolveToCall
3333
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptorIfAny
3434
import org.jetbrains.kotlin.idea.core.targetDescriptors
3535
import org.jetbrains.kotlin.idea.intentions.ConvertReferenceToLambdaIntention
@@ -43,8 +43,6 @@ import org.jetbrains.kotlin.psi.*
4343
import org.jetbrains.kotlin.psi.psiUtil.collectDescendantsOfType
4444
import org.jetbrains.kotlin.psi.psiUtil.forEachDescendantOfType
4545
import org.jetbrains.kotlin.psi.psiUtil.getStrictParentOfType
46-
import org.jetbrains.kotlin.resolve.BindingContext
47-
import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode
4846

4947
interface UsageReplacementStrategy {
5048
fun createReplacer(usage: KtSimpleNameExpression): (() -> KtElement?)?
@@ -189,8 +187,7 @@ private fun UsageReplacementStrategy.doRefactoringInside(
189187
) {
190188
element.forEachDescendantOfType<KtSimpleNameExpression> { usage ->
191189
if (usage.isValid && usage.getReferencedName() == targetName) {
192-
val context = usage.analyze(BodyResolveMode.PARTIAL)
193-
if (targetDescriptor == context[BindingContext.REFERENCE_TARGET, usage]) {
190+
if (targetDescriptor == usage.resolveToCall()?.candidateDescriptor) {
194191
createReplacer(usage)?.invoke()
195192
}
196193
}

idea/src/org/jetbrains/kotlin/idea/inspections/UnnecessaryVariableInspection.kt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import com.intellij.psi.search.searches.ReferencesSearch
2424
import org.jetbrains.kotlin.descriptors.FunctionDescriptor
2525
import org.jetbrains.kotlin.descriptors.VariableDescriptor
2626
import org.jetbrains.kotlin.idea.caches.resolve.analyze
27+
import org.jetbrains.kotlin.idea.caches.resolve.resolveToCall
2728
import org.jetbrains.kotlin.idea.core.NewDeclarationNameValidator
2829
import org.jetbrains.kotlin.idea.refactoring.inline.KotlinInlineValHandler
2930
import org.jetbrains.kotlin.psi.*
@@ -33,6 +34,7 @@ import org.jetbrains.kotlin.psi.psiUtil.getStrictParentOfType
3334
import org.jetbrains.kotlin.resolve.BindingContext.DECLARATION_TO_DESCRIPTOR
3435
import org.jetbrains.kotlin.resolve.BindingContext.REFERENCE_TARGET
3536
import org.jetbrains.kotlin.resolve.DescriptorToSourceUtils
37+
import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode
3638

3739
class UnnecessaryVariableInspection : AbstractApplicabilityBasedInspection<KtProperty>(KtProperty::class.java) {
3840

@@ -69,8 +71,8 @@ class UnnecessaryVariableInspection : AbstractApplicabilityBasedInspection<KtPro
6971

7072
fun isExactCopy(): Boolean {
7173
if (!property.isVar && initializer is KtNameReferenceExpression && property.typeReference == null) {
72-
val context = property.analyze()
73-
val initializerDescriptor = context[REFERENCE_TARGET, initializer] as? VariableDescriptor ?: return false
74+
val initializerDescriptor = initializer.resolveToCall(BodyResolveMode.FULL)?.resultingDescriptor as? VariableDescriptor
75+
?: return false
7476
if (initializerDescriptor.isVar) return false
7577
if (initializerDescriptor.containingDeclaration !is FunctionDescriptor) return false
7678

idea/src/org/jetbrains/kotlin/idea/intentions/ConvertLambdaToReferenceIntention.kt

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,9 +55,7 @@ open class ConvertLambdaToReferenceIntention(text: String) :
5555

5656
private fun KtLambdaArgument.outerCalleeDescriptor(): FunctionDescriptor? {
5757
val outerCallExpression = parent as? KtCallExpression ?: return null
58-
val context = outerCallExpression.analyze()
59-
val outerCallee = outerCallExpression.calleeExpression as? KtReferenceExpression ?: return null
60-
return context[REFERENCE_TARGET, outerCallee] as? FunctionDescriptor
58+
return outerCallExpression.resolveToCall()?.resultingDescriptor as? FunctionDescriptor
6159
}
6260

6361
private fun isConvertibleCallInLambda(

idea/src/org/jetbrains/kotlin/idea/intentions/DeprecatedCallableAddReplaceWithIntention.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import org.jetbrains.kotlin.descriptors.FunctionDescriptor
2525
import org.jetbrains.kotlin.descriptors.PackageFragmentDescriptor
2626
import org.jetbrains.kotlin.descriptors.Visibilities
2727
import org.jetbrains.kotlin.idea.caches.resolve.analyze
28+
import org.jetbrains.kotlin.idea.caches.resolve.resolveToCall
2829
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptorIfAny
2930
import org.jetbrains.kotlin.idea.core.ShortenReferences
3031
import org.jetbrains.kotlin.idea.core.moveCaret
@@ -167,7 +168,7 @@ class DeprecatedCallableAddReplaceWithIntention : SelfTargetingRangeIntention<Kt
167168
}
168169

169170
override fun visitSimpleNameExpression(expression: KtSimpleNameExpression) {
170-
val target = expression.analyze()[BindingContext.REFERENCE_TARGET, expression] as? DeclarationDescriptorWithVisibility ?: return
171+
val target = expression.resolveToCall()?.resultingDescriptor as? DeclarationDescriptorWithVisibility ?: return
171172
if (Visibilities.isPrivate((target.visibility))) {
172173
isGood = false
173174
}

idea/src/org/jetbrains/kotlin/idea/intentions/IntroduceBackingPropertyIntention.kt

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ package org.jetbrains.kotlin.idea.intentions
1919
import com.intellij.openapi.editor.Editor
2020
import org.jetbrains.kotlin.descriptors.PropertyDescriptor
2121
import org.jetbrains.kotlin.descriptors.impl.SyntheticFieldDescriptor
22-
import org.jetbrains.kotlin.idea.caches.resolve.analyze
2322
import org.jetbrains.kotlin.idea.caches.resolve.getResolutionFacade
23+
import org.jetbrains.kotlin.idea.caches.resolve.resolveToCall
2424
import org.jetbrains.kotlin.lexer.KtTokens
2525
import org.jetbrains.kotlin.psi.*
2626
import org.jetbrains.kotlin.psi.psiUtil.getStrictParentOfType
@@ -115,8 +115,7 @@ class IntroduceBackingPropertyIntention : SelfTargetingIntention<KtProperty>(KtP
115115
private fun replaceFieldReferences(element: KtElement, propertyName: String) {
116116
element.acceptChildren(object : KtTreeVisitorVoid() {
117117
override fun visitSimpleNameExpression(expression: KtSimpleNameExpression) {
118-
val bindingContext = expression.analyze()
119-
val target = bindingContext.get(BindingContext.REFERENCE_TARGET, expression)
118+
val target = expression.resolveToCall()?.resultingDescriptor
120119
if (target is SyntheticFieldDescriptor) {
121120
expression.replace(KtPsiFactory(element).createSimpleName("_$propertyName"))
122121
}

idea/src/org/jetbrains/kotlin/idea/intentions/MovePropertyToConstructorIntention.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -127,8 +127,7 @@ class MovePropertyToConstructorIntention :
127127

128128
private fun KtProperty.findConstructorParameter(): KtParameter? {
129129
val reference = initializer as? KtReferenceExpression ?: return null
130-
val parameterDescriptor = reference.analyze(BodyResolveMode.PARTIAL)[BindingContext.REFERENCE_TARGET, reference]
131-
as? ParameterDescriptor ?: return null
130+
val parameterDescriptor = reference.resolveToCall()?.resultingDescriptor as? ParameterDescriptor ?: return null
132131
return parameterDescriptor.source.getPsi() as? KtParameter
133132
}
134133

idea/src/org/jetbrains/kotlin/idea/intentions/branchedTransformations/IfThenUtils.kt

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import com.intellij.psi.search.searches.ReferencesSearch
2323
import org.jetbrains.kotlin.KtNodeTypes
2424
import org.jetbrains.kotlin.descriptors.VariableDescriptor
2525
import org.jetbrains.kotlin.idea.caches.resolve.analyze
26+
import org.jetbrains.kotlin.idea.caches.resolve.resolveToCall
2627
import org.jetbrains.kotlin.idea.core.replaced
2728
import org.jetbrains.kotlin.idea.intentions.getLeftMostReceiverExpression
2829
import org.jetbrains.kotlin.idea.intentions.replaceFirstReceiver
@@ -39,7 +40,6 @@ import org.jetbrains.kotlin.resolve.calls.callUtil.getResolvedCall
3940
import org.jetbrains.kotlin.resolve.calls.callUtil.getType
4041
import org.jetbrains.kotlin.resolve.calls.resolvedCallUtil.getImplicitReceiverValue
4142
import org.jetbrains.kotlin.resolve.calls.smartcasts.isStableValue
42-
import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode
4343
import org.jetbrains.kotlin.resolve.scopes.receivers.ImplicitReceiver
4444
import org.jetbrains.kotlin.types.TypeUtils
4545
import org.jetbrains.kotlin.types.typeUtil.isSubtypeOf
@@ -80,9 +80,8 @@ fun KtExpression?.isNullExpressionOrEmptyBlock(): Boolean =
8080
fun KtThrowExpression.throwsNullPointerExceptionWithNoArguments(): Boolean {
8181
val thrownExpression = this.thrownExpression as? KtCallExpression ?: return false
8282

83-
val context = this.analyze(BodyResolveMode.PARTIAL)
8483
val nameExpression = thrownExpression.calleeExpression as? KtNameReferenceExpression ?: return false
85-
val descriptor = context[BindingContext.REFERENCE_TARGET, nameExpression]
84+
val descriptor = nameExpression.resolveToCall()?.resultingDescriptor
8685
val declDescriptor = descriptor?.containingDeclaration ?: return false
8786

8887
val exceptionName = DescriptorUtils.getFqName(declDescriptor).asString()

idea/src/org/jetbrains/kotlin/idea/parameterInfo/SuspendingCallHints.kt

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,16 +7,12 @@ package org.jetbrains.kotlin.idea.parameterInfo
77

88
import com.intellij.codeInsight.hints.InlayInfo
99
import org.jetbrains.kotlin.backend.common.descriptors.isSuspend
10-
import org.jetbrains.kotlin.idea.caches.resolve.analyze
10+
import org.jetbrains.kotlin.idea.caches.resolve.resolveToCall
1111
import org.jetbrains.kotlin.psi.KtCallExpression
1212
import org.jetbrains.kotlin.psi.psiUtil.startOffset
13-
import org.jetbrains.kotlin.resolve.BindingContext
14-
import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode
1513

1614
fun provideSuspendingCallHint(callExpression: KtCallExpression): InlayInfo? {
17-
val bindingContext = callExpression.analyze(BodyResolveMode.PARTIAL)
18-
val call = bindingContext[BindingContext.CALL, callExpression.calleeExpression] ?: return null
19-
val resolvedCall = bindingContext[BindingContext.RESOLVED_CALL, call] ?: return null
15+
val resolvedCall = callExpression.resolveToCall() ?: return null
2016
if (resolvedCall.candidateDescriptor.isSuspend) {
2117
return InlayInfo(TYPE_INFO_PREFIX + "#", callExpression.calleeExpression?.startOffset ?: callExpression.startOffset)
2218
}

idea/src/org/jetbrains/kotlin/idea/quickfix/AddConstModifierFix.kt

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ import com.intellij.psi.search.searches.ReferencesSearch
2727
import org.jetbrains.kotlin.asJava.LightClassUtil
2828
import org.jetbrains.kotlin.descriptors.VariableDescriptor
2929
import org.jetbrains.kotlin.diagnostics.Diagnostic
30-
import org.jetbrains.kotlin.idea.caches.resolve.analyze
30+
import org.jetbrains.kotlin.idea.caches.resolve.resolveToCall
3131
import org.jetbrains.kotlin.idea.intentions.SelfTargetingIntention
3232
import org.jetbrains.kotlin.idea.search.allScope
3333
import org.jetbrains.kotlin.idea.search.usagesSearch.descriptor
@@ -39,9 +39,7 @@ import org.jetbrains.kotlin.psi.KtFile
3939
import org.jetbrains.kotlin.psi.KtProperty
4040
import org.jetbrains.kotlin.psi.KtReferenceExpression
4141
import org.jetbrains.kotlin.psi.psiUtil.getNonStrictParentOfType
42-
import org.jetbrains.kotlin.resolve.BindingContext
4342
import org.jetbrains.kotlin.resolve.checkers.ConstModifierChecker
44-
import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode
4543
import org.jetbrains.kotlin.resolve.source.PsiSourceElement
4644

4745
class AddConstModifierFix(val property: KtProperty) : AddModifierFix(property, KtTokens.CONST_KEYWORD), CleanupFix {
@@ -86,8 +84,7 @@ class AddConstModifierIntention : SelfTargetingIntention<KtProperty>(KtProperty:
8684
object ConstFixFactory : KotlinSingleIntentionActionFactory() {
8785
override fun createAction(diagnostic: Diagnostic): IntentionAction? {
8886
val expr = diagnostic.psiElement as? KtReferenceExpression ?: return null
89-
val bindingContext = expr.analyze(BodyResolveMode.PARTIAL)
90-
val targetDescriptor = bindingContext.get(BindingContext.REFERENCE_TARGET, expr) as? VariableDescriptor ?: return null
87+
val targetDescriptor = expr.resolveToCall()?.resultingDescriptor as? VariableDescriptor ?: return null
9188
val declaration = (targetDescriptor.source as? PsiSourceElement)?.psi as? KtProperty ?: return null
9289
if (ConstModifierChecker.canBeConst(declaration, declaration, targetDescriptor)) {
9390
return AddConstModifierFix(declaration)

idea/src/org/jetbrains/kotlin/idea/quickfix/AddSuspendModifierFix.kt

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,10 @@ import org.jetbrains.kotlin.builtins.isFunctionType
2121
import org.jetbrains.kotlin.cfg.pseudocode.containingDeclarationForPseudocode
2222
import org.jetbrains.kotlin.descriptors.ValueDescriptor
2323
import org.jetbrains.kotlin.diagnostics.Diagnostic
24-
import org.jetbrains.kotlin.idea.caches.resolve.analyze
24+
import org.jetbrains.kotlin.idea.caches.resolve.resolveToCall
2525
import org.jetbrains.kotlin.lexer.KtTokens
2626
import org.jetbrains.kotlin.psi.*
27-
import org.jetbrains.kotlin.resolve.BindingContext
2827
import org.jetbrains.kotlin.resolve.DescriptorToSourceUtils
29-
import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode
3028

3129
class AddSuspendModifierFix(
3230
element: KtModifierListOwner,
@@ -62,8 +60,7 @@ class AddSuspendModifierFix(
6260
if (callParent !== qualifiedGrandParent.selectorExpression || refExpr !== callParent.calleeExpression) return null
6361
val receiver = qualifiedGrandParent.receiverExpression as? KtNameReferenceExpression ?: return null
6462

65-
val context = receiver.analyze(BodyResolveMode.PARTIAL)
66-
val receiverDescriptor = context[BindingContext.REFERENCE_TARGET, receiver] as? ValueDescriptor ?: return null
63+
val receiverDescriptor = receiver.resolveToCall()?.resultingDescriptor as? ValueDescriptor ?: return null
6764
if (!receiverDescriptor.type.isFunctionType) return null
6865
val declaration = DescriptorToSourceUtils.descriptorToDeclaration(receiverDescriptor) as? KtCallableDeclaration
6966
?: return null

idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/moveConflictUtils.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -294,6 +294,7 @@ class MoveConflictChecker(
294294
if (declaration.module == targetModule) continue
295295

296296
declaration.forEachDescendantOfType<KtReferenceExpression> { refExpr ->
297+
// NB: for unknown reason, refExpr.resolveToCall() does not work here
297298
val targetDescriptor = refExpr.analyze(BodyResolveMode.PARTIAL)[BindingContext.REFERENCE_TARGET, refExpr] ?: return@forEachDescendantOfType
298299

299300
if (KotlinBuiltIns.isBuiltIn(targetDescriptor)) return@forEachDescendantOfType
@@ -467,10 +468,10 @@ class MoveConflictChecker(
467468
val rootClassDescriptor: ClassDescriptor
468469
if (elementToMove is KtClass && elementToMove.isSealed()) {
469470
rootClass = elementToMove
470-
rootClassDescriptor = rootClass.resolveToDescriptorIfAny() as? ClassDescriptor ?: return
471+
rootClassDescriptor = rootClass.resolveToDescriptorIfAny() ?: return
471472
}
472473
else {
473-
val classDescriptor = elementToMove.resolveToDescriptorIfAny() as? ClassDescriptor ?: return
474+
val classDescriptor = elementToMove.resolveToDescriptorIfAny() ?: return
474475
val superClassDescriptor = classDescriptor.getSuperClassNotAny() ?: return
475476
if (superClassDescriptor.modality != Modality.SEALED) return
476477
rootClassDescriptor = superClassDescriptor

idea/src/org/jetbrains/kotlin/idea/refactoring/rename/RenameBackingFieldReferenceHandler.kt

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,16 +23,15 @@ import com.intellij.psi.PsiElement
2323
import com.intellij.psi.PsiFile
2424
import com.intellij.refactoring.rename.inplace.VariableInplaceRenameHandler
2525
import org.jetbrains.kotlin.descriptors.impl.SyntheticFieldDescriptor
26-
import org.jetbrains.kotlin.idea.caches.resolve.analyze
26+
import org.jetbrains.kotlin.idea.caches.resolve.resolveToCall
2727
import org.jetbrains.kotlin.idea.codeInsight.CodeInsightUtils
2828
import org.jetbrains.kotlin.psi.KtSimpleNameExpression
29-
import org.jetbrains.kotlin.resolve.BindingContext
3029

3130
class RenameBackingFieldReferenceHandler: VariableInplaceRenameHandler() {
3231
override fun isAvailable(element: PsiElement?, editor: Editor, file: PsiFile): Boolean {
3332
val refExpression = file.findElementForRename<KtSimpleNameExpression>(editor.caretModel.offset) ?: return false
3433
if (refExpression.text != "field") return false
35-
return refExpression.analyze()[BindingContext.REFERENCE_TARGET, refExpression] is SyntheticFieldDescriptor
34+
return refExpression.resolveToCall()?.resultingDescriptor is SyntheticFieldDescriptor
3635
}
3736

3837
override fun invoke(project: Project, editor: Editor, file: PsiFile, dataContext: DataContext?) {

idea/src/org/jetbrains/kotlin/idea/refactoring/rename/RenameDynamicMemberHandler.kt

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,16 +25,15 @@ import org.jetbrains.kotlin.psi.KtSimpleNameExpression
2525
import com.intellij.openapi.project.Project
2626
import com.intellij.openapi.actionSystem.DataContext
2727
import org.jetbrains.kotlin.idea.codeInsight.CodeInsightUtils
28-
import org.jetbrains.kotlin.idea.caches.resolve.analyze
29-
import org.jetbrains.kotlin.resolve.BindingContext
28+
import org.jetbrains.kotlin.idea.caches.resolve.resolveToCall
3029
import org.jetbrains.kotlin.resolve.calls.tasks.isDynamic
3130

3231
class RenameDynamicMemberHandler: VariableInplaceRenameHandler() {
3332
override fun isAvailable(element: PsiElement?, editor: Editor, file: PsiFile): Boolean {
3433
val callee = PsiTreeUtil.findElementOfClassAtOffset(
3534
file, editor.caretModel.offset, KtSimpleNameExpression::class.java, false
3635
) ?: return false
37-
val calleeDescriptor = callee.analyze()[BindingContext.REFERENCE_TARGET, callee] ?: return false
36+
val calleeDescriptor = callee.resolveToCall()?.resultingDescriptor ?: return false
3837
return calleeDescriptor.isDynamic()
3938
}
4039

0 commit comments

Comments
 (0)