From 075870fee9f384dab6f4f90b4874677e064023cd Mon Sep 17 00:00:00 2001 From: Yan Zhulanow Date: Thu, 5 Mar 2020 23:20:32 +0900 Subject: [PATCH] Fix EA-207101: Abort changing property declaration from Java accessor This is not a proper fix. "Change signature" in Kotlin should support changing property name/type through accessors. However, it's not easy to achieve without a huge refactoring. --- .../KotlinChangeSignatureUsageProcessor.kt | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/KotlinChangeSignatureUsageProcessor.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/KotlinChangeSignatureUsageProcessor.kt index 07e60b39638..59c91ecba5b 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/KotlinChangeSignatureUsageProcessor.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/KotlinChangeSignatureUsageProcessor.kt @@ -995,8 +995,12 @@ class KotlinChangeSignatureUsageProcessor : ChangeSignatureUsageProcessor { baseFunction = baseFunction.createPrimaryConstructorIfAbsent() } val resolutionFacade = baseFunction.getResolutionFacade() - val baseFunctionDescriptor = baseFunction.unsafeResolveToDescriptor() as FunctionDescriptor - val methodDescriptor = KotlinChangeSignatureData(baseFunctionDescriptor, baseFunction, listOf(baseFunctionDescriptor)) + val baseCallableDescriptor = baseFunction.unsafeResolveToDescriptor() as CallableDescriptor + if (baseCallableDescriptor !is FunctionDescriptor) { + return false + } + + val methodDescriptor = KotlinChangeSignatureData(baseCallableDescriptor, baseFunction, listOf(baseCallableDescriptor)) val dummyClass = JavaPsiFacade.getElementFactory(method.project).createClass("Dummy") val dummyMethod = createJavaMethod(method, dummyClass)