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 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) { if (needParameters) {
parameters.forEachIndexed { index, parameter -> parameters.forEachIndexed { index, parameter ->
if (index > 0) { if (index > 0) {
@@ -1,11 +1,11 @@
// WITH_RUNTIME // WITH_RUNTIME
import java.io.File import java.io.File
import java.io.FilenameFilter import java.io.FileFilter
fun foo(filter: FilenameFilter) {} fun foo(filter: FileFilter) {}
fun bar() { fun bar() {
foo(<caret>object: FilenameFilter { foo(<caret>object: FileFilter {
override fun accept(file: File, name: String) = true override fun accept(file: File) = true
}) })
} }
@@ -1,9 +1,9 @@
// WITH_RUNTIME // WITH_RUNTIME
import java.io.File import java.io.File
import java.io.FilenameFilter import java.io.FileFilter
fun foo(filter: FilenameFilter) {} fun foo(filter: FileFilter) {}
fun bar() { 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> <problem_class severity="WARNING" attribute_key="WARNING_ATTRIBUTES">Convert object literal to lambda</problem_class>
<description>Convert to lambda</description> <description>Convert to lambda</description>
</problem> </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> <problem>
<file>NoSamAdapterNeeded.kt</file> <file>NoSamAdapterNeeded.kt</file>
@@ -6183,6 +6183,12 @@ public class IntentionTestGenerated extends AbstractIntentionTest {
doTest(fileName); 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") @TestMetadata("QualifiedReturn.kt")
public void testQualifiedReturn() throws Exception { public void testQualifiedReturn() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/objectLiteralToLambda/QualifiedReturn.kt"); String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/objectLiteralToLambda/QualifiedReturn.kt");