diff --git a/core/descriptors/src/org/jetbrains/kotlin/resolve/DescriptorUtils.kt b/core/descriptors/src/org/jetbrains/kotlin/resolve/DescriptorUtils.kt index 3c1bdb6b371..51117639eea 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/resolve/DescriptorUtils.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/resolve/DescriptorUtils.kt @@ -28,8 +28,13 @@ public fun ClassDescriptor.getClassObjectReferenceTarget(): ClassDescriptor { public fun ClassDescriptor.hasSyntheticClassObject(): Boolean = getKind() in setOf(ENUM_ENTRY, OBJECT) -public fun DeclarationDescriptor.getImportableDescriptor(): DeclarationDescriptor = - if (this is ConstructorDescriptor || DescriptorUtils.isClassObject(this)) getContainingDeclaration()!! else this +public fun DeclarationDescriptor.getImportableDescriptor(): DeclarationDescriptor { + return when { + this is ConstructorDescriptor, DescriptorUtils.isClassObject(this) -> getContainingDeclaration()!! + this is PropertyAccessorDescriptor -> getCorrespondingProperty() + else -> this + } +} public val DeclarationDescriptor.isExtension: Boolean get() = this is CallableDescriptor && getExtensionReceiverParameter() != null diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveUtils.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveUtils.kt index 69f24ec831f..4a49b119067 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveUtils.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveUtils.kt @@ -17,16 +17,12 @@ package org.jetbrains.kotlin.idea.refactoring.move import org.jetbrains.kotlin.idea.codeInsight.JetFileReferencesResolver -import org.jetbrains.kotlin.psi.JetSimpleNameExpression import org.jetbrains.kotlin.resolve.BindingContext import org.jetbrains.kotlin.resolve.DescriptorUtils import org.jetbrains.kotlin.descriptors.PackageFragmentDescriptor import org.jetbrains.kotlin.idea.references.JetSimpleNameReference import org.jetbrains.kotlin.name.FqName -import org.jetbrains.kotlin.psi.JetFile -import org.jetbrains.kotlin.psi.JetElement import org.jetbrains.kotlin.idea.JetFileType -import org.jetbrains.kotlin.psi.JetNamedDeclaration import org.jetbrains.kotlin.idea.codeInsight.DescriptorToDeclarationUtil import org.jetbrains.kotlin.psi.psiUtil.isAncestor import java.util.Collections @@ -40,14 +36,10 @@ import com.intellij.psi.PsiElement import com.intellij.psi.PsiReference import com.intellij.refactoring.util.MoveRenameUsageInfo import org.jetbrains.kotlin.idea.references.JetReference -import org.jetbrains.kotlin.asJava.namedUnwrappedElement import org.jetbrains.kotlin.psi.psiUtil.getNonStrictParentOfType -import org.jetbrains.kotlin.psi.JetImportDirective import java.util.ArrayList import com.intellij.refactoring.util.NonCodeUsageInfo import org.jetbrains.kotlin.idea.util.ImportInsertHelper -import org.jetbrains.kotlin.idea.refactoring.fqName.getKotlinFqName -import org.jetbrains.kotlin.psi.JetThisExpression import org.jetbrains.kotlin.idea.references.JetSimpleNameReference.ShorteningMode import com.intellij.openapi.vfs.VirtualFile import com.intellij.openapi.util.Comparing @@ -60,6 +52,9 @@ import org.jetbrains.kotlin.descriptors.CallableDescriptor import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor.Kind import org.jetbrains.kotlin.psi.psiUtil.getQualifiedElementSelector +import org.jetbrains.kotlin.psi.* +import org.jetbrains.kotlin.idea.caches.resolve.* +import org.jetbrains.kotlin.asJava.* public class PackageNameInfo(val oldPackageName: FqName, val newPackageName: FqName) @@ -210,9 +205,9 @@ fun postProcessMoveUsages(usages: List, } is MoveRenameUsageInfoForExtension -> { - val element = counterpart(usage.getReferencedElement()!!) val file = with(usage) { if (addImportToOriginalFile) originalFile else counterpart(originalFile) } as JetFile - ImportInsertHelper.getInstance(element.getProject()).addImportDirectiveIfNeeded(element.getKotlinFqName()!!, file) + val declaration = counterpart(usage.getReferencedElement()!!).unwrapped as JetDeclaration + ImportInsertHelper.getInstance(usage.getProject()).importDescriptor(file, declaration.resolveToDescriptor()) } is MoveRenameUsageInfo -> {