Intention convert object literal to lambda should add parameters if there are more than one
This commit is contained in:
@@ -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 })
|
||||||
}
|
}
|
||||||
|
|||||||
+11
@@ -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
|
||||||
|
})
|
||||||
|
}
|
||||||
+9
@@ -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");
|
||||||
|
|||||||
Reference in New Issue
Block a user