From c952e26cbbb66cf7d47099f41fa58a1f45a724a0 Mon Sep 17 00:00:00 2001 From: Kirill Rakhman Date: Thu, 2 Mar 2017 23:17:55 +0300 Subject: [PATCH] Fix NPE caused by Rename Refactoring of backing field when caret is after the last character #KT-16605 Fixed --- .../rename/RenameBackingFieldReferenceHandler.kt | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/RenameBackingFieldReferenceHandler.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/RenameBackingFieldReferenceHandler.kt index fc4fbd7830a..e8cd2db4ea4 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/RenameBackingFieldReferenceHandler.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/RenameBackingFieldReferenceHandler.kt @@ -1,5 +1,5 @@ /* - * Copyright 2010-2016 JetBrains s.r.o. + * Copyright 2010-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -21,7 +21,6 @@ import com.intellij.openapi.editor.Editor import com.intellij.openapi.project.Project import com.intellij.psi.PsiElement import com.intellij.psi.PsiFile -import com.intellij.psi.util.PsiTreeUtil import com.intellij.refactoring.rename.inplace.VariableInplaceRenameHandler import org.jetbrains.kotlin.descriptors.impl.SyntheticFieldDescriptor import org.jetbrains.kotlin.idea.caches.resolve.analyze @@ -31,9 +30,7 @@ import org.jetbrains.kotlin.resolve.BindingContext class RenameBackingFieldReferenceHandler: VariableInplaceRenameHandler() { override fun isAvailable(element: PsiElement?, editor: Editor, file: PsiFile): Boolean { - val refExpression = PsiTreeUtil.findElementOfClassAtOffset( - file, editor.caretModel.offset, KtSimpleNameExpression::class.java, false - ) ?: return false + val refExpression = file.findElementForRename(editor.caretModel.offset) ?: return false if (refExpression.text != "field") return false return refExpression.analyze()[BindingContext.REFERENCE_TARGET, refExpression] is SyntheticFieldDescriptor }