AddFunctionParametersFix: improve parameter name for 'it' argument

#KT-33297 Fixed
This commit is contained in:
Toshiaki Kameyama
2019-10-30 22:49:20 +09:00
committed by Mikhail Glukhikh
parent f8f50b2131
commit f1c605d0f7
4 changed files with 28 additions and 0 deletions
@@ -40,6 +40,7 @@ import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.psi.ValueArgument
import org.jetbrains.kotlin.psi.psiUtil.getStrictParentOfType
import org.jetbrains.kotlin.resolve.calls.callUtil.getCall
import org.jetbrains.kotlin.resolve.calls.callUtil.getType
import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode
import org.jetbrains.kotlin.types.checker.KotlinTypeChecker
@@ -64,6 +65,12 @@ abstract class ChangeFunctionSignatureFix(
argumentName != null -> KotlinNameSuggester.suggestNameByName(argumentName.asName.asString(), validator)
expression != null -> {
val bindingContext = expression.analyze(BodyResolveMode.PARTIAL)
if (expression.text == "it") {
val type = expression.getType(bindingContext)
if (type != null) {
return KotlinNameSuggester.suggestNamesByType(type, validator, "param").first()
}
}
KotlinNameSuggester.suggestNamesByExpressionAndType(expression, null, bindingContext, validator, "param").first()
}
else -> KotlinNameSuggester.suggestNameByName("param", validator)
@@ -0,0 +1,8 @@
// "Add parameter to constructor 'Foo'" "true"
// WITH_RUNTIME
class Foo
fun test(name: String) {
name.also { Foo(it<caret>) }
}
@@ -0,0 +1,8 @@
// "Add parameter to constructor 'Foo'" "true"
// WITH_RUNTIME
class Foo(s: String)
fun test(name: String) {
name.also { Foo(it) }
}
@@ -2185,6 +2185,11 @@ public class QuickFixTestGenerated extends AbstractQuickFixTest {
runTest("idea/testData/quickfix/changeSignature/addEnumConstructorParameter5.kt");
}
@TestMetadata("addForItParameter.kt")
public void testAddForItParameter() throws Exception {
runTest("idea/testData/quickfix/changeSignature/addForItParameter.kt");
}
@TestMetadata("addFunctionParameter.kt")
public void testAddFunctionParameter() throws Exception {
runTest("idea/testData/quickfix/changeSignature/addFunctionParameter.kt");