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