Change Signature: Fix transfer of argument to receiver position
#KT-7987 Fixed
This commit is contained in:
+5
-7
@@ -415,14 +415,12 @@ public class JetFunctionCallUsage extends JetUsageInfo<JetCallElement> {
|
||||
ValueArgument receiverArgument = argumentMap.get(newReceiverInfo.getOldIndex());
|
||||
JetExpression extensionReceiverExpression = receiverArgument != null ? receiverArgument.getArgumentExpression() : null;
|
||||
JetExpression defaultValueForCall = newReceiverInfo.getDefaultValueForCall();
|
||||
String receiverText = extensionReceiverExpression != null
|
||||
? extensionReceiverExpression.getText()
|
||||
: defaultValueForCall != null ? defaultValueForCall.getText() : "";
|
||||
if (receiverText.isEmpty()) {
|
||||
receiverText = "_";
|
||||
}
|
||||
JetExpression receiver =
|
||||
extensionReceiverExpression != null ? psiFactory.createExpression(extensionReceiverExpression.getText())
|
||||
: defaultValueForCall != null ? defaultValueForCall
|
||||
: psiFactory.createExpression("_");
|
||||
|
||||
replacingElement = psiFactory.createExpression(receiverText + "." + element.getText());
|
||||
replacingElement = PsiPackage.createExpressionByPattern(psiFactory, "$0.$1", receiver, element);
|
||||
}
|
||||
|
||||
newElement = (JetElement) elementToReplace.replace(replacingElement);
|
||||
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
fun f(list: List<Any>) {
|
||||
list.filter { (it as String).foo() }
|
||||
}
|
||||
|
||||
fun String.foo(): Boolean = true
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
fun f(list: List<Any>) {
|
||||
list.filter { foo(it as String) }
|
||||
}
|
||||
|
||||
fun <caret>foo(s: String): Boolean = true
|
||||
+6
@@ -924,6 +924,12 @@ public class JetChangeSignatureTest extends KotlinCodeInsightTestCase {
|
||||
doTest(changeInfo);
|
||||
}
|
||||
|
||||
public void testConvertParameterToReceiverAddParens() throws Exception {
|
||||
JetChangeInfo changeInfo = getChangeInfo();
|
||||
changeInfo.setReceiverParameterInfo(changeInfo.getNewParameters()[0]);
|
||||
doTest(changeInfo);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
protected String getTestDataPath() {
|
||||
|
||||
Reference in New Issue
Block a user