Reformat: ReplaceSingleLineLetIntention

This commit is contained in:
Toshiaki Kameyama
2018-06-11 11:42:26 +03:00
committed by Mikhail Glukhikh
parent 817d75a47f
commit d4798b699f
@@ -26,8 +26,8 @@ class ReplaceSingleLineLetInspection : IntentionBasedInspection<KtCallExpression
} }
class ReplaceSingleLineLetIntention : SelfTargetingOffsetIndependentIntention<KtCallExpression>( class ReplaceSingleLineLetIntention : SelfTargetingOffsetIndependentIntention<KtCallExpression>(
KtCallExpression::class.java, KtCallExpression::class.java,
"Remove redundant '.let' call" "Remove redundant '.let' call"
) { ) {
override fun applyTo(element: KtCallExpression, editor: Editor?) { override fun applyTo(element: KtCallExpression, editor: Editor?) {
element.lambdaArguments.firstOrNull()?.getLambdaExpression()?.bodyExpression?.children?.singleOrNull()?.let { element.lambdaArguments.firstOrNull()?.getLambdaExpression()?.bodyExpression?.children?.singleOrNull()?.let {
@@ -98,8 +98,7 @@ class ReplaceSingleLineLetIntention : SelfTargetingOffsetIndependentIntention<Kt
is KtDotQualifiedExpression -> if (!left.isApplicable(parameterName)) return false is KtDotQualifiedExpression -> if (!left.isApplicable(parameterName)) return false
else -> return false else -> return false
} }
} } else {
else {
if (!left.isApplicable(parameterName)) return false if (!left.isApplicable(parameterName)) return false
} }
@@ -122,17 +121,15 @@ class ReplaceSingleLineLetIntention : SelfTargetingOffsetIndependentIntention<Kt
} }
private fun KtDotQualifiedExpression.isApplicable(parameterName: String) = private fun KtDotQualifiedExpression.isApplicable(parameterName: String) =
!hasLambdaExpression() && getLeftMostReceiverExpression().let { receiver -> !hasLambdaExpression() && getLeftMostReceiverExpression().let { receiver ->
receiver is KtNameReferenceExpression && receiver is KtNameReferenceExpression &&
receiver.getReferencedName() == parameterName && receiver.getReferencedName() == parameterName &&
!nameUsed(parameterName, except = receiver) !nameUsed(parameterName, except = receiver)
} }
private fun KtDotQualifiedExpression.hasLambdaExpression() private fun KtDotQualifiedExpression.hasLambdaExpression() = selectorExpression?.anyDescendantOfType<KtLambdaExpression>() ?: false
= selectorExpression?.anyDescendantOfType<KtLambdaExpression>() ?: false
private fun KtCallExpression.isLetMethodCall() = private fun KtCallExpression.isLetMethodCall() = calleeExpression?.text == "let" && isMethodCall("kotlin.let")
calleeExpression?.text == "let" && isMethodCall("kotlin.let")
private fun KtLambdaExpression.getParameterName(): String? { private fun KtLambdaExpression.getParameterName(): String? {
val parameters = valueParameters val parameters = valueParameters
@@ -141,5 +138,5 @@ class ReplaceSingleLineLetIntention : SelfTargetingOffsetIndependentIntention<Kt
} }
private fun KtExpression.nameUsed(name: String, except: KtNameReferenceExpression? = null): Boolean = private fun KtExpression.nameUsed(name: String, except: KtNameReferenceExpression? = null): Boolean =
anyDescendantOfType<KtNameReferenceExpression> { it != except && it.getReferencedName() == name } anyDescendantOfType<KtNameReferenceExpression> { it != except && it.getReferencedName() == name }
} }