Quick-Fixes: Fix signature configuration for extension functions
#KT-7019 Fixed
This commit is contained in:
@@ -69,7 +69,7 @@ public class ChangeFunctionLiteralSignatureFix extends ChangeFunctionSignatureFi
|
||||
@Override
|
||||
public Unit invoke(JetMutableMethodDescriptor descriptor) {
|
||||
JetNameValidator validator = new SimpleCollectingValidator();
|
||||
descriptor.clearParameters();
|
||||
descriptor.clearNonReceiverParameters();
|
||||
for (JetType type : parameterTypes) {
|
||||
String name = JetNameSuggester.suggestNames(type, validator, "param")[0];
|
||||
descriptor.addParameter(new JetParameterInfo(-1, name, type, null, "", null, null));
|
||||
|
||||
@@ -28,13 +28,12 @@ import org.jetbrains.kotlin.idea.JetBundle;
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.ResolvePackage;
|
||||
import org.jetbrains.kotlin.idea.refactoring.changeSignature.ChangeSignaturePackage;
|
||||
import org.jetbrains.kotlin.idea.refactoring.changeSignature.JetChangeSignatureConfiguration;
|
||||
import org.jetbrains.kotlin.idea.refactoring.changeSignature.JetMutableMethodDescriptor;
|
||||
import org.jetbrains.kotlin.idea.refactoring.changeSignature.JetMethodDescriptor;
|
||||
import org.jetbrains.kotlin.idea.refactoring.changeSignature.JetMutableMethodDescriptor;
|
||||
import org.jetbrains.kotlin.psi.JetFile;
|
||||
import org.jetbrains.kotlin.resolve.BindingContext;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
import static org.jetbrains.kotlin.idea.refactoring.changeSignature.ChangeSignaturePackage.runChangeSignature;
|
||||
|
||||
@@ -68,8 +67,8 @@ public class RemoveFunctionParametersFix extends ChangeFunctionSignatureFix {
|
||||
new ExtensionFunction0<JetMutableMethodDescriptor, Unit>() {
|
||||
@Override
|
||||
public Unit invoke(JetMutableMethodDescriptor descriptor) {
|
||||
List<ValueParameterDescriptor> parameters = functionDescriptor.getValueParameters();
|
||||
descriptor.removeParameter(parameters.indexOf(parameterToRemove));
|
||||
int index = functionDescriptor.getValueParameters().indexOf(parameterToRemove);
|
||||
descriptor.removeParameter(descriptor.getReceiver() != null ? index + 1 : index);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
+6
@@ -39,6 +39,12 @@ public class JetMutableMethodDescriptor(val original: JetMethodDescriptor): JetM
|
||||
|
||||
public fun clearParameters() {
|
||||
parameters.clear()
|
||||
receiver = null
|
||||
}
|
||||
|
||||
public fun clearNonReceiverParameters() {
|
||||
parameters.clear()
|
||||
receiver?.let { parameters.add(it) }
|
||||
}
|
||||
|
||||
override fun getVisibility(): Visibility? {
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
// "Change the signature of function literal" "true"
|
||||
|
||||
fun foo(f: Int.(Int, Int) -> Int) {
|
||||
|
||||
}
|
||||
|
||||
fun test() {
|
||||
foo {(i: Int, i1: Int) -> 0 }
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
// "Remove parameter 'x'" "true"
|
||||
|
||||
fun Int.f() {
|
||||
|
||||
}
|
||||
|
||||
fun test() {
|
||||
1.f()
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
// "Change the signature of function literal" "true"
|
||||
|
||||
fun foo(f: Int.(Int, Int) -> Int) {
|
||||
|
||||
}
|
||||
|
||||
fun test() {
|
||||
foo { <caret>(a: Int) -> 0 }
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
// "Remove parameter 'x'" "true"
|
||||
|
||||
fun Int.f(<caret>x: Int) {
|
||||
|
||||
}
|
||||
|
||||
fun test() {
|
||||
1.f(2)
|
||||
}
|
||||
@@ -541,6 +541,12 @@ public class QuickFixTestGenerated extends AbstractQuickFixTest {
|
||||
doTest(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("beforeFixExtensionLambdaSignature.kt")
|
||||
public void testFixExtensionLambdaSignature() throws Exception {
|
||||
String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/changeSignature/beforeFixExtensionLambdaSignature.kt");
|
||||
doTest(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("beforeLinearHierarchy.kt")
|
||||
public void testLinearHierarchy() throws Exception {
|
||||
String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/changeSignature/beforeLinearHierarchy.kt");
|
||||
@@ -601,6 +607,12 @@ public class QuickFixTestGenerated extends AbstractQuickFixTest {
|
||||
doTest(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("beforeRemoveUnusedExtensionParameter.kt")
|
||||
public void testRemoveUnusedExtensionParameter() throws Exception {
|
||||
String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/changeSignature/beforeRemoveUnusedExtensionParameter.kt");
|
||||
doTest(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("beforeRemoveUnusedParameter.kt")
|
||||
public void testRemoveUnusedParameter() throws Exception {
|
||||
String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/changeSignature/beforeRemoveUnusedParameter.kt");
|
||||
|
||||
Reference in New Issue
Block a user