Reformat IfThenToElvisIntention

This commit is contained in:
Mikhail Glukhikh
2018-04-19 10:27:28 +03:00
parent b75024e3e0
commit 7601aaf89f
@@ -32,18 +32,18 @@ import org.jetbrains.kotlin.resolve.calls.callUtil.getType
import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode
class IfThenToElvisInspection : IntentionBasedInspection<KtIfExpression>(
IfThenToElvisIntention::class,
{ it -> it.isUsedAsExpression(it.analyze(BodyResolveMode.PARTIAL_WITH_CFA)) }
IfThenToElvisIntention::class,
{ it -> it.isUsedAsExpression(it.analyze(BodyResolveMode.PARTIAL_WITH_CFA)) }
) {
override fun inspectionTarget(element: KtIfExpression) = element.ifKeyword
override fun problemHighlightType(element: KtIfExpression): ProblemHighlightType =
if (element.shouldBeTransformed()) super.problemHighlightType(element) else ProblemHighlightType.INFORMATION
if (element.shouldBeTransformed()) super.problemHighlightType(element) else ProblemHighlightType.INFORMATION
}
class IfThenToElvisIntention : SelfTargetingOffsetIndependentIntention<KtIfExpression>(
KtIfExpression::class.java,
"Replace 'if' expression with elvis expression"
KtIfExpression::class.java,
"Replace 'if' expression with elvis expression"
) {
private fun IfThenToSelectData.clausesReplaceableByElvis(): Boolean {
@@ -51,8 +51,8 @@ class IfThenToElvisIntention : SelfTargetingOffsetIndependentIntention<KtIfExpre
if (negatedClause is KtThrowExpression && negatedClause.throwsNullPointerExceptionWithNoArguments()) return false
return receiverExpression is KtThisExpression && hasImplicitReceiver() ||
baseClause.evaluatesTo(receiverExpression) ||
baseClause.hasFirstReceiverOf(receiverExpression) && !baseClause.hasNullableType(context)
baseClause.evaluatesTo(receiverExpression) ||
baseClause.hasFirstReceiverOf(receiverExpression) && !baseClause.hasNullableType(context)
}
override fun isApplicableTo(element: KtIfExpression): Boolean {
@@ -78,9 +78,13 @@ class IfThenToElvisIntention : SelfTargetingOffsetIndependentIntention<KtIfExpre
val factory = KtPsiFactory(element)
val elvis = runWriteAction {
val replacedBaseClause = ifThenToSelectData.replacedBaseClause(factory)
val newExpr = element.replaced(factory.createExpressionByPattern("$0 ?: $1",
replacedBaseClause,
ifThenToSelectData.negatedClause!!))
val newExpr = element.replaced(
factory.createExpressionByPattern(
"$0 ?: $1",
replacedBaseClause,
ifThenToSelectData.negatedClause!!
)
)
KtPsiUtil.deparenthesize(newExpr) as KtBinaryExpression
}