Intention convert object literal to lambda should add parameters if there are more than one

This commit is contained in:
Natalia Ukhorskaya
2015-12-16 14:17:32 +03:00
parent 5e231db631
commit cc259c2d15
7 changed files with 42 additions and 8 deletions
@@ -84,7 +84,7 @@ class ObjectLiteralToLambdaIntention : SelfTargetingRangeIntention<KtObjectLiter
val parameters = singleFunction.valueParameters
val needParameters = parameters.any { parameter -> ReferencesSearch.search(parameter, LocalSearchScope(body)).any() }
val needParameters = parameters.count() > 1 || parameters.any { parameter -> ReferencesSearch.search(parameter, LocalSearchScope(body)).any() }
if (needParameters) {
parameters.forEachIndexed { index, parameter ->
if (index > 0) {
@@ -1,11 +1,11 @@
// WITH_RUNTIME
import java.io.File
import java.io.FilenameFilter
import java.io.FileFilter
fun foo(filter: FilenameFilter) {}
fun foo(filter: FileFilter) {}
fun bar() {
foo(<caret>object: FilenameFilter {
override fun accept(file: File, name: String) = true
foo(<caret>object: FileFilter {
override fun accept(file: File) = true
})
}
@@ -1,9 +1,9 @@
// WITH_RUNTIME
import java.io.File
import java.io.FilenameFilter
import java.io.FileFilter
fun foo(filter: FilenameFilter) {}
fun foo(filter: FileFilter) {}
fun bar() {
foo(FilenameFilter { true })
foo(FileFilter { true })
}
@@ -0,0 +1,11 @@
// WITH_RUNTIME
import java.io.File
import java.io.FilenameFilter
fun foo(filter: FilenameFilter) {}
fun bar() {
foo(<caret>object: FilenameFilter {
override fun accept(file: File, name: String) = true
})
}
@@ -0,0 +1,9 @@
// WITH_RUNTIME
import java.io.File
import java.io.FilenameFilter
fun foo(filter: FilenameFilter) {}
fun bar() {
foo(FilenameFilter { file, name -> true })
}
@@ -52,6 +52,14 @@
<problem_class severity="WARNING" attribute_key="WARNING_ATTRIBUTES">Convert object literal to lambda</problem_class>
<description>Convert to lambda</description>
</problem>
<problem>
<file>ParametersNotUsedMoreThanOne.kt</file>
<line>8</line>
<module>light_idea_test_case</module>
<entry_point TYPE="file" FQNAME="ParametersNotUsedMoreThanOne.kt" />
<problem_class severity="WARNING" attribute_key="WARNING_ATTRIBUTES">Convert object literal to lambda</problem_class>
<description>Convert to lambda</description>
</problem>
<problem>
<file>NoSamAdapterNeeded.kt</file>
@@ -6183,6 +6183,12 @@ public class IntentionTestGenerated extends AbstractIntentionTest {
doTest(fileName);
}
@TestMetadata("ParametersNotUsedMoreThanOne.kt")
public void testParametersNotUsedMoreThanOne() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/objectLiteralToLambda/ParametersNotUsedMoreThanOne.kt");
doTest(fileName);
}
@TestMetadata("QualifiedReturn.kt")
public void testQualifiedReturn() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/objectLiteralToLambda/QualifiedReturn.kt");