don't abort refactoring in case of exceptions in AutomaticVariableRenamer
This commit is contained in:
@@ -16,6 +16,7 @@
|
||||
|
||||
package org.jetbrains.kotlin.idea.refactoring.rename
|
||||
|
||||
import com.intellij.openapi.diagnostic.Logger
|
||||
import com.intellij.openapi.util.text.StringUtil
|
||||
import com.intellij.psi.PsiClass
|
||||
import com.intellij.psi.PsiElement
|
||||
@@ -26,7 +27,6 @@ import com.intellij.refactoring.RefactoringBundle
|
||||
import com.intellij.refactoring.rename.naming.AutomaticRenamer
|
||||
import com.intellij.refactoring.rename.naming.AutomaticRenamerFactory
|
||||
import com.intellij.usageView.UsageInfo
|
||||
import org.jetbrains.kotlin.asJava.LightClassUtil
|
||||
import org.jetbrains.kotlin.asJava.toLightClass
|
||||
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
||||
import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
||||
@@ -39,10 +39,10 @@ import org.jetbrains.kotlin.psi.JetVariableDeclaration
|
||||
import org.jetbrains.kotlin.psi.psiUtil.isAncestor
|
||||
import org.jetbrains.kotlin.resolve.DescriptorUtils
|
||||
import org.jetbrains.kotlin.resolve.descriptorUtil.builtIns
|
||||
import org.jetbrains.kotlin.resolve.lazy.NoDescriptorForDeclarationException
|
||||
import org.jetbrains.kotlin.resolve.source.PsiSourceElement
|
||||
import org.jetbrains.kotlin.types.JetType
|
||||
import java.util.ArrayList
|
||||
import java.util.LinkedHashMap
|
||||
import java.util.*
|
||||
|
||||
public class AutomaticVariableRenamer(
|
||||
klass: PsiNamedElement, // PsiClass or JetClass
|
||||
@@ -62,7 +62,15 @@ public class AutomaticVariableRenamer(
|
||||
) ?: continue
|
||||
|
||||
if (parameterOrVariable.getTypeReference()?.isAncestor(usageElement) != true) continue
|
||||
val type = (parameterOrVariable.resolveToDescriptor() as VariableDescriptor).getType()
|
||||
|
||||
val descriptor = try {
|
||||
parameterOrVariable.resolveToDescriptor()
|
||||
} catch(e: NoDescriptorForDeclarationException) {
|
||||
LOG.error(e)
|
||||
continue
|
||||
}
|
||||
|
||||
val type = (descriptor as VariableDescriptor).getType()
|
||||
if (type.isCollectionLikeOf(klass)) {
|
||||
toUnpluralize.add(parameterOrVariable)
|
||||
}
|
||||
@@ -94,6 +102,10 @@ public class AutomaticVariableRenamer(
|
||||
else
|
||||
canonicalName
|
||||
}
|
||||
|
||||
companion object {
|
||||
val LOG = Logger.getInstance(AutomaticVariableRenamer::class.java)
|
||||
}
|
||||
}
|
||||
|
||||
private fun JetType.isCollectionLikeOf(classPsiElement: PsiNamedElement): Boolean {
|
||||
|
||||
Reference in New Issue
Block a user