AddFunctionParametersFix: improve parameter name for 'it' argument
#KT-33297 Fixed
This commit is contained in:
committed by
Mikhail Glukhikh
parent
f8f50b2131
commit
f1c605d0f7
@@ -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");
|
||||
|
||||
Reference in New Issue
Block a user