Reformat: ReplaceSingleLineLetIntention
This commit is contained in:
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 }
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user