Minor: Extract name comparison

This commit is contained in:
Yan Zhulanow
2020-03-10 18:43:02 +09:00
parent 19d1532dc7
commit 08f31758b8
@@ -60,14 +60,14 @@ abstract class ChangeFunctionSignatureFix(
protected fun getNewArgumentName(argument: ValueArgument, validator: Function1<String, Boolean>): String {
val expression = KtPsiUtil.deparenthesize(argument.getArgumentExpression())
val argumentName = argument.getArgumentName()?.asName?.asString()
?: (expression as? KtNameReferenceExpression)?.getReferencedName()?.takeIf { it != "it" && it != "field" }
?: (expression as? KtNameReferenceExpression)?.getReferencedName()?.takeIf { !isSpecialName(it) }
return when {
argumentName != null -> KotlinNameSuggester.suggestNameByName(argumentName, validator)
expression != null -> {
val bindingContext = expression.analyze(BodyResolveMode.PARTIAL)
val expressionText = expression.text
if (expressionText == "it" || expressionText == "field") {
if (isSpecialName(expressionText)) {
val type = expression.getType(bindingContext)
if (type != null) {
return KotlinNameSuggester.suggestNamesByType(type, validator, "param").first()
@@ -79,6 +79,10 @@ abstract class ChangeFunctionSignatureFix(
}
}
private fun isSpecialName(name: String): Boolean {
return name == "it" || name == "field"
}
companion object : KotlinSingleIntentionActionFactoryWithDelegate<KtCallElement, CallableDescriptor>() {
override fun getElementOfInterest(diagnostic: Diagnostic): KtCallElement? = diagnostic.psiElement.getStrictParentOfType()