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
This commit is contained in:
Mikhail Glukhikh
2017-05-03 20:07:00 +03:00
parent 1d722e01f0
commit 759e6643c6
4 changed files with 13 additions and 19 deletions
+2 -7
View File
@@ -1385,11 +1385,6 @@
<category>Kotlin</category>
</intentionAction>
<intentionAction>
<className>org.jetbrains.kotlin.idea.intentions.ConvertLambdaToReferenceIntention</className>
<category>Kotlin</category>
</intentionAction>
<intentionAction>
<className>org.jetbrains.kotlin.idea.intentions.ConvertReferenceToLambdaIntention</className>
<category>Kotlin</category>
@@ -1953,8 +1948,8 @@
<localInspection implementationClass="org.jetbrains.kotlin.idea.intentions.ConvertLambdaToReferenceInspection"
displayName="Can be replaced with function reference"
groupName="Kotlin"
enabledByDefault="false"
level="INFO"
enabledByDefault="true"
level="INFORMATION"
language="kotlin"
/>
@@ -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<KtLambdaExpression>(
ConvertLambdaToReferenceIntention::class,
{ it -> ConvertLambdaToReferenceIntention.shouldSuggestToConvert(it) }
) {
override fun inspectionTarget(element: KtLambdaExpression) = element.bodyExpression?.statements?.singleOrNull()
}
class ConvertLambdaToReferenceInspection : IntentionBasedInspection<KtLambdaExpression>(ConvertLambdaToReferenceIntention::class)
open class ConvertLambdaToReferenceIntention(text: String) :
SelfTargetingOffsetIndependentIntention<KtLambdaExpression>(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()