From 759e6643c61a27c4f14ea2d123d2e6c6a963fb67 Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Wed, 3 May 2017 20:07:00 +0300 Subject: [PATCH] ConvertLambdaToReference refactoring Intention is not registered now; inspection is enabled by default now, but has highlight level of "No highlighting" Inspection does not depend on text length now So #KT-14335 Fixed --- idea/src/META-INF/plugin.xml | 9 ++------- .../intentions/ConvertLambdaToReferenceIntention.kt | 11 +---------- .../inspectionData/expected.xml | 10 +++++++++- .../inspections/convertLambdaToReference/test.kt | 2 +- 4 files changed, 13 insertions(+), 19 deletions(-) diff --git a/idea/src/META-INF/plugin.xml b/idea/src/META-INF/plugin.xml index ccea1824973..623fb8dcb49 100644 --- a/idea/src/META-INF/plugin.xml +++ b/idea/src/META-INF/plugin.xml @@ -1385,11 +1385,6 @@ Kotlin - - org.jetbrains.kotlin.idea.intentions.ConvertLambdaToReferenceIntention - Kotlin - - org.jetbrains.kotlin.idea.intentions.ConvertReferenceToLambdaIntention Kotlin @@ -1953,8 +1948,8 @@ diff --git a/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertLambdaToReferenceIntention.kt b/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertLambdaToReferenceIntention.kt index acbef8891b7..3420130175c 100644 --- a/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertLambdaToReferenceIntention.kt +++ b/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertLambdaToReferenceIntention.kt @@ -40,12 +40,7 @@ import org.jetbrains.kotlin.types.isError import org.jetbrains.kotlin.types.typeUtil.isTypeParameter import org.jetbrains.kotlin.types.typeUtil.isUnit -class ConvertLambdaToReferenceInspection : IntentionBasedInspection( - ConvertLambdaToReferenceIntention::class, - { it -> ConvertLambdaToReferenceIntention.shouldSuggestToConvert(it) } -) { - override fun inspectionTarget(element: KtLambdaExpression) = element.bodyExpression?.statements?.singleOrNull() -} +class ConvertLambdaToReferenceInspection : IntentionBasedInspection(ConvertLambdaToReferenceIntention::class) open class ConvertLambdaToReferenceIntention(text: String) : SelfTargetingOffsetIndependentIntention(KtLambdaExpression::class.java, text) { @@ -219,10 +214,6 @@ open class ConvertLambdaToReferenceIntention(text: String) : } companion object { - internal fun shouldSuggestToConvert(element: KtLambdaExpression): Boolean { - val referenceName = buildReferenceText(lambdaExpression = element, shortTypes = true) ?: return false - return referenceName.length < element.text.length - } private fun buildReferenceText(lambdaExpression: KtLambdaExpression, shortTypes: Boolean): String? { val singleStatement = lambdaExpression.singleStatementOrNull() diff --git a/idea/testData/inspections/convertLambdaToReference/inspectionData/expected.xml b/idea/testData/inspections/convertLambdaToReference/inspectionData/expected.xml index da0cde82bb0..2ee3e2bbbfb 100644 --- a/idea/testData/inspections/convertLambdaToReference/inspectionData/expected.xml +++ b/idea/testData/inspections/convertLambdaToReference/inspectionData/expected.xml @@ -9,7 +9,15 @@ test.kt - 14 + 9 + light_idea_test_case + + Can be replaced with function reference + Convert lambda to reference + + + test.kt + 13 light_idea_test_case Can be replaced with function reference diff --git a/idea/testData/inspections/convertLambdaToReference/test.kt b/idea/testData/inspections/convertLambdaToReference/test.kt index abaa19071b9..8850de8c487 100644 --- a/idea/testData/inspections/convertLambdaToReference/test.kt +++ b/idea/testData/inspections/convertLambdaToReference/test.kt @@ -4,7 +4,7 @@ class TheirWrapper(val x: Int) val x = { y: Int -> TheirWrapper(y) } -// Should not suggest to convert (too long reference) +// Should suggest to convert despite of too long reference fun foo(arg: TheirWrapper, convert: (TheirWrapper) -> String) = convert(arg) val y = foo(TheirWrapper(42)) { it.toString() }