Convert Function Type Parameter to Receiver: Drop redundant arrows

This commit is contained in:
Alexey Sedunov
2017-08-10 20:13:03 +03:00
parent f80fcc7146
commit 537c1fd063
4 changed files with 21 additions and 1 deletions
@@ -123,7 +123,11 @@ class ConvertFunctionTypeParameterToReceiverIntention : SelfTargetingRangeIntent
for (ref in ReferencesSearch.search(parameterToConvert, LocalSearchScope(expression))) {
(ref.element as? KtSimpleNameExpression)?.replace(thisRefExpr)
}
expression.functionLiteral.valueParameterList!!.removeParameter(parameterToConvert)
val lambda = expression.functionLiteral
lambda.valueParameterList!!.removeParameter(parameterToConvert)
if (lambda.valueParameters.isEmpty()) {
lambda.arrow?.delete()
}
}
return
}
@@ -0,0 +1,5 @@
fun foo(n: Int, action: (<caret>Int) -> Int) = action(n)
fun test() {
foo(1) { n -> n + 1 }
}
@@ -0,0 +1,5 @@
fun foo(n: Int, action: Int.(<caret>) -> Int) = n.action()
fun test() {
foo(1) { this + 1 }
}
@@ -4570,6 +4570,12 @@ public class IntentionTestGenerated extends AbstractIntentionTest {
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/convertFunctionTypeParameterToReceiver/overrides.kt");
doTest(fileName);
}
@TestMetadata("singleExplicitParameter.kt")
public void testSingleExplicitParameter() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/convertFunctionTypeParameterToReceiver/singleExplicitParameter.kt");
doTest(fileName);
}
}
@TestMetadata("idea/testData/intentions/convertFunctionTypeReceiverToParameter")