Reformat IfThenToElvisIntention
This commit is contained in:
+14
-10
@@ -32,18 +32,18 @@ import org.jetbrains.kotlin.resolve.calls.callUtil.getType
|
|||||||
import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode
|
import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode
|
||||||
|
|
||||||
class IfThenToElvisInspection : IntentionBasedInspection<KtIfExpression>(
|
class IfThenToElvisInspection : IntentionBasedInspection<KtIfExpression>(
|
||||||
IfThenToElvisIntention::class,
|
IfThenToElvisIntention::class,
|
||||||
{ it -> it.isUsedAsExpression(it.analyze(BodyResolveMode.PARTIAL_WITH_CFA)) }
|
{ it -> it.isUsedAsExpression(it.analyze(BodyResolveMode.PARTIAL_WITH_CFA)) }
|
||||||
) {
|
) {
|
||||||
override fun inspectionTarget(element: KtIfExpression) = element.ifKeyword
|
override fun inspectionTarget(element: KtIfExpression) = element.ifKeyword
|
||||||
|
|
||||||
override fun problemHighlightType(element: KtIfExpression): ProblemHighlightType =
|
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>(
|
class IfThenToElvisIntention : SelfTargetingOffsetIndependentIntention<KtIfExpression>(
|
||||||
KtIfExpression::class.java,
|
KtIfExpression::class.java,
|
||||||
"Replace 'if' expression with elvis expression"
|
"Replace 'if' expression with elvis expression"
|
||||||
) {
|
) {
|
||||||
|
|
||||||
private fun IfThenToSelectData.clausesReplaceableByElvis(): Boolean {
|
private fun IfThenToSelectData.clausesReplaceableByElvis(): Boolean {
|
||||||
@@ -51,8 +51,8 @@ class IfThenToElvisIntention : SelfTargetingOffsetIndependentIntention<KtIfExpre
|
|||||||
if (negatedClause is KtThrowExpression && negatedClause.throwsNullPointerExceptionWithNoArguments()) return false
|
if (negatedClause is KtThrowExpression && negatedClause.throwsNullPointerExceptionWithNoArguments()) return false
|
||||||
|
|
||||||
return receiverExpression is KtThisExpression && hasImplicitReceiver() ||
|
return receiverExpression is KtThisExpression && hasImplicitReceiver() ||
|
||||||
baseClause.evaluatesTo(receiverExpression) ||
|
baseClause.evaluatesTo(receiverExpression) ||
|
||||||
baseClause.hasFirstReceiverOf(receiverExpression) && !baseClause.hasNullableType(context)
|
baseClause.hasFirstReceiverOf(receiverExpression) && !baseClause.hasNullableType(context)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun isApplicableTo(element: KtIfExpression): Boolean {
|
override fun isApplicableTo(element: KtIfExpression): Boolean {
|
||||||
@@ -78,9 +78,13 @@ class IfThenToElvisIntention : SelfTargetingOffsetIndependentIntention<KtIfExpre
|
|||||||
val factory = KtPsiFactory(element)
|
val factory = KtPsiFactory(element)
|
||||||
val elvis = runWriteAction {
|
val elvis = runWriteAction {
|
||||||
val replacedBaseClause = ifThenToSelectData.replacedBaseClause(factory)
|
val replacedBaseClause = ifThenToSelectData.replacedBaseClause(factory)
|
||||||
val newExpr = element.replaced(factory.createExpressionByPattern("$0 ?: $1",
|
val newExpr = element.replaced(
|
||||||
replacedBaseClause,
|
factory.createExpressionByPattern(
|
||||||
ifThenToSelectData.negatedClause!!))
|
"$0 ?: $1",
|
||||||
|
replacedBaseClause,
|
||||||
|
ifThenToSelectData.negatedClause!!
|
||||||
|
)
|
||||||
|
)
|
||||||
KtPsiUtil.deparenthesize(newExpr) as KtBinaryExpression
|
KtPsiUtil.deparenthesize(newExpr) as KtBinaryExpression
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user