Move: Detect extension declaration by PSI instead of descriptor as extension descriptor maybe wrapper for Java method

#KT-10203 Fixed
This commit is contained in:
Alexey Sedunov
2015-11-27 13:42:49 +03:00
parent 1bf521c645
commit 15b7eca665
2 changed files with 3 additions and 2 deletions
@@ -316,7 +316,7 @@ public fun KtClassOrObject.effectiveDeclarations(): List<KtDeclaration> {
}
}
public fun KtDeclaration.isExtensionDeclaration(): Boolean {
public fun PsiElement.isExtensionDeclaration(): Boolean {
val callable: KtCallableDeclaration? = when (this) {
is KtNamedFunction, is KtProperty -> this as KtCallableDeclaration
is KtPropertyAccessor -> getNonStrictParentOfType<KtProperty>()
@@ -38,6 +38,7 @@ import com.intellij.refactoring.util.MoveRenameUsageInfo
import com.intellij.refactoring.util.NonCodeUsageInfo
import com.intellij.usageView.UsageInfo
import com.intellij.util.IncorrectOperationException
import com.intellij.util.containers.ContainerUtil
import org.jetbrains.kotlin.asJava.namedUnwrappedElement
import org.jetbrains.kotlin.asJava.unwrapped
import org.jetbrains.kotlin.descriptors.*
@@ -93,7 +94,7 @@ public fun KtElement.getInternalReferencesToUpdateOnPackageNameChange(packageNam
val declaration = DescriptorToSourceUtilsIde.getAnyDeclaration(getProject(), descriptor) ?: return null
val isCallable = descriptor is CallableDescriptor
val isExtension = isCallable && (descriptor as CallableDescriptor).getExtensionReceiverParameter() != null
val isExtension = isCallable && declaration.isExtensionDeclaration()
if (isCallable && !isExtension) {
val containingDescriptor = descriptor.getContainingDeclaration()