Rename: Disable JavaMemberByKotlinReferenceInplaceRenameHandler for synthetic properties referenced from Kotlin code

#KT-9168 Fixed
(cherry picked from commit dfebdaf)
This commit is contained in:
Alexey Sedunov
2016-06-22 15:22:42 +03:00
parent 7a584e876b
commit 746b8895e2
2 changed files with 7 additions and 3 deletions
@@ -25,6 +25,7 @@ import com.intellij.psi.PsiNameIdentifierOwner
import com.intellij.refactoring.rename.inplace.MemberInplaceRenameHandler
import com.intellij.refactoring.rename.inplace.MemberInplaceRenamer
import org.jetbrains.kotlin.asJava.unwrapped
import org.jetbrains.kotlin.idea.references.SyntheticPropertyAccessorReference
import org.jetbrains.kotlin.psi.KtPsiUtil
import org.jetbrains.kotlin.psi.KtSimpleNameExpression
import org.jetbrains.kotlin.psi.psiUtil.getNonStrictParentOfType
@@ -41,9 +42,11 @@ class JavaMemberByKotlinReferenceInplaceRenameHandler : MemberInplaceRenameHandl
}
override fun isAvailable(element: PsiElement?, editor: Editor, file: PsiFile): Boolean {
return super.isAvailable(element, editor, file)
&& element?.unwrapped is PsiMember
&& file.findElementAt(editor.caretModel.offset)?.getNonStrictParentOfType<KtSimpleNameExpression>() != null
if (!super.isAvailable(element, editor, file)) return false
if (element?.unwrapped !is PsiMember) return false
val refExpr = file.findElementAt(editor.caretModel.offset)?.getNonStrictParentOfType<KtSimpleNameExpression>() ?: return false
if (refExpr.references.any { (it as? SyntheticPropertyAccessorReference)?.resolve() != null }) return false
return true
}
override fun createMemberRenamer(element: PsiElement, elementToRename: PsiNameIdentifierOwner, editor: Editor): MemberInplaceRenamer {