Code simplifications
This commit is contained in:
+8
-26
@@ -19,43 +19,25 @@ package org.jetbrains.kotlin.idea.intentions.branchedTransformations.intentions
|
||||
import com.intellij.openapi.editor.Editor
|
||||
import org.jetbrains.kotlin.idea.intentions.JetSelfTargetingOffsetIndependentIntention
|
||||
import org.jetbrains.kotlin.idea.intentions.branchedTransformations.BranchedFoldingUtils
|
||||
import org.jetbrains.kotlin.psi
|
||||
import org.jetbrains.kotlin.psi.JetBinaryExpression
|
||||
import org.jetbrains.kotlin.psi.JetIfExpression
|
||||
import org.jetbrains.kotlin.psi.JetSimpleNameExpression
|
||||
import org.jetbrains.kotlin.psi.createExpressionByPattern
|
||||
import org.jetbrains.kotlin.psi.*
|
||||
|
||||
public class FoldIfToAssignmentIntention : JetSelfTargetingOffsetIndependentIntention<JetIfExpression>(javaClass(), "Replace 'if' expression with assignment") {
|
||||
override fun isApplicableTo(element: JetIfExpression): Boolean {
|
||||
val thenBranch = element.getThen()
|
||||
val elseBranch = element.getElse()
|
||||
|
||||
val thenAssignment = BranchedFoldingUtils.getFoldableBranchedAssignment(thenBranch)
|
||||
val elseAssignment = BranchedFoldingUtils.getFoldableBranchedAssignment(elseBranch)
|
||||
|
||||
if (thenAssignment == null || elseAssignment == null) return false
|
||||
|
||||
val thenAssignment = BranchedFoldingUtils.getFoldableBranchedAssignment(element.getThen()) ?: return false
|
||||
val elseAssignment = BranchedFoldingUtils.getFoldableBranchedAssignment(element.getElse()) ?: return false
|
||||
return BranchedFoldingUtils.checkAssignmentsMatch(thenAssignment, elseAssignment)
|
||||
}
|
||||
|
||||
override fun applyTo(element: JetIfExpression, editor: Editor) {
|
||||
var thenAssignment = BranchedFoldingUtils.getFoldableBranchedAssignment(element.getThen()!!)!!
|
||||
val elseAssignment = BranchedFoldingUtils.getFoldableBranchedAssignment(element.getElse()!!)!!
|
||||
|
||||
val op = thenAssignment.getOperationReference().getText()
|
||||
val lhs = thenAssignment.getLeft() as JetSimpleNameExpression
|
||||
val leftText = thenAssignment.getLeft()!!.getText()
|
||||
|
||||
val assignment = psi.JetPsiFactory(element).createExpressionByPattern("$0 $1 $2", lhs, op, element)
|
||||
val newIfExpression = (assignment as JetBinaryExpression).getRight() as JetIfExpression
|
||||
thenAssignment.replace(thenAssignment.getRight()!!)
|
||||
elseAssignment.replace(elseAssignment.getRight()!!)
|
||||
|
||||
thenAssignment = BranchedFoldingUtils.getFoldableBranchedAssignment(newIfExpression.getThen()!!)!!
|
||||
val elseAssignment = BranchedFoldingUtils.getFoldableBranchedAssignment(newIfExpression.getElse()!!)!!
|
||||
|
||||
val thenRhs = thenAssignment.getRight()!!
|
||||
val elseRhs = elseAssignment.getRight()!!
|
||||
|
||||
thenAssignment.replace(thenRhs)
|
||||
elseAssignment.replace(elseRhs)
|
||||
|
||||
element.replace(assignment)
|
||||
element.replace(JetPsiFactory(element).createExpressionByPattern("$0 $1 $2", leftText, op, element))
|
||||
}
|
||||
}
|
||||
+10
-19
@@ -19,10 +19,7 @@ package org.jetbrains.kotlin.idea.intentions.branchedTransformations.intentions
|
||||
import com.intellij.openapi.editor.Editor
|
||||
import org.jetbrains.kotlin.idea.intentions.JetSelfTargetingOffsetIndependentIntention
|
||||
import org.jetbrains.kotlin.idea.intentions.branchedTransformations.BranchedFoldingUtils
|
||||
import org.jetbrains.kotlin.psi
|
||||
import org.jetbrains.kotlin.psi.JetExpression
|
||||
import org.jetbrains.kotlin.psi.JetIfExpression
|
||||
import org.jetbrains.kotlin.psi.JetPsiUtil
|
||||
import org.jetbrains.kotlin.psi.*
|
||||
|
||||
public class FoldIfToReturnAsymmetricallyIntention : JetSelfTargetingOffsetIndependentIntention<JetIfExpression>(javaClass(), "Replace 'if' expression with return") {
|
||||
override fun isApplicableTo(element: JetIfExpression): Boolean {
|
||||
@@ -31,30 +28,24 @@ public class FoldIfToReturnAsymmetricallyIntention : JetSelfTargetingOffsetIndep
|
||||
}
|
||||
|
||||
val nextElement = JetPsiUtil.skipTrailingWhitespacesAndComments(element)
|
||||
return nextElement is JetExpression && BranchedFoldingUtils.getFoldableBranchedReturn(nextElement) != null
|
||||
return nextElement is JetReturnExpression && nextElement.getReturnedExpression() != null
|
||||
}
|
||||
|
||||
override fun applyTo(element: JetIfExpression, editor: Editor) {
|
||||
val condition = element.getCondition()!!
|
||||
val thenRoot = element.getThen()!!
|
||||
val elseRoot = JetPsiUtil.skipTrailingWhitespacesAndComments(element) as JetExpression
|
||||
val thenBranch = element.getThen()!!
|
||||
val elseBranch = JetPsiUtil.skipTrailingWhitespacesAndComments(element) as JetReturnExpression
|
||||
|
||||
val psiFactory = psi.JetPsiFactory(element)
|
||||
var newIfExpression = psiFactory.createIf(condition, thenRoot, elseRoot)
|
||||
val newReturnExpression = psiFactory.createReturn(newIfExpression)
|
||||
|
||||
newIfExpression = newReturnExpression.getReturnedExpression() as JetIfExpression
|
||||
val psiFactory = JetPsiFactory(element)
|
||||
var newIfExpression = psiFactory.createIf(condition, thenBranch, elseBranch)
|
||||
|
||||
val thenReturn = BranchedFoldingUtils.getFoldableBranchedReturn(newIfExpression.getThen()!!)!!
|
||||
val elseReturn = BranchedFoldingUtils.getFoldableBranchedReturn(newIfExpression.getElse()!!)!!
|
||||
|
||||
val thenExpr = thenReturn.getReturnedExpression()!!
|
||||
val elseExpr = elseReturn.getReturnedExpression()!!
|
||||
thenReturn.replace(thenReturn.getReturnedExpression()!!)
|
||||
elseReturn.replace(elseReturn.getReturnedExpression()!!)
|
||||
|
||||
thenReturn.replace(thenExpr)
|
||||
elseReturn.replace(elseExpr)
|
||||
|
||||
elseRoot.delete()
|
||||
element.replace(newReturnExpression)
|
||||
element.replace(psiFactory.createReturn(newIfExpression))
|
||||
elseBranch.delete()
|
||||
}
|
||||
}
|
||||
+6
-11
@@ -21,6 +21,7 @@ import org.jetbrains.kotlin.idea.intentions.JetSelfTargetingOffsetIndependentInt
|
||||
import org.jetbrains.kotlin.idea.intentions.branchedTransformations.BranchedFoldingUtils
|
||||
import org.jetbrains.kotlin.psi.JetIfExpression
|
||||
import org.jetbrains.kotlin.psi.JetPsiFactory
|
||||
import org.jetbrains.kotlin.psi.createExpressionByPattern
|
||||
|
||||
public class FoldIfToReturnIntention : JetSelfTargetingOffsetIndependentIntention<JetIfExpression>(javaClass(), "Replace 'if' expression with return") {
|
||||
override fun isApplicableTo(element: JetIfExpression): Boolean {
|
||||
@@ -29,18 +30,12 @@ public class FoldIfToReturnIntention : JetSelfTargetingOffsetIndependentIntentio
|
||||
}
|
||||
|
||||
override fun applyTo(element: JetIfExpression, editor: Editor) {
|
||||
val newReturnExpression = JetPsiFactory(element).createReturn(element)
|
||||
val newIfExpression = newReturnExpression.getReturnedExpression() as JetIfExpression
|
||||
val thenReturn = BranchedFoldingUtils.getFoldableBranchedReturn(element.getThen()!!)!!
|
||||
val elseReturn = BranchedFoldingUtils.getFoldableBranchedReturn(element.getElse()!!)!!
|
||||
|
||||
val thenReturn = BranchedFoldingUtils.getFoldableBranchedReturn(newIfExpression.getThen()!!)!!
|
||||
val elseReturn = BranchedFoldingUtils.getFoldableBranchedReturn(newIfExpression.getElse()!!)!!
|
||||
thenReturn.replace(thenReturn.getReturnedExpression()!!)
|
||||
elseReturn.replace(elseReturn.getReturnedExpression()!!)
|
||||
|
||||
val thenExpr = thenReturn.getReturnedExpression()!!
|
||||
val elseExpr = elseReturn.getReturnedExpression()!!
|
||||
|
||||
thenReturn.replace(thenExpr)
|
||||
elseReturn.replace(elseExpr)
|
||||
|
||||
element.replace(newReturnExpression)
|
||||
element.replace(JetPsiFactory(element).createReturn(element))
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user