ElvisToIfThenIntention - smaller range + minor code improvements
This commit is contained in:
@@ -243,8 +243,6 @@ unfold.call.to.when.family=Replace Method Call with 'when' Expression
|
|||||||
if.then.to.double.bang=Replace 'if' expression with '!!' expression
|
if.then.to.double.bang=Replace 'if' expression with '!!' expression
|
||||||
if.then.to.double.bang.replace.exception=Replace 'if' expression with '!!' expression (will remove Exception)
|
if.then.to.double.bang.replace.exception=Replace 'if' expression with '!!' expression (will remove Exception)
|
||||||
if.then.to.double.bang.family=Replace 'if' Expression with '!!' Expression
|
if.then.to.double.bang.family=Replace 'if' Expression with '!!' Expression
|
||||||
elvis.to.if.then=Replace elvis expression with 'if' expression
|
|
||||||
elvis.to.if.then.family=Replace Elvis Expression with 'if' Expression
|
|
||||||
safe.access.to.if.then=Replace safe access expression with 'if' expression
|
safe.access.to.if.then=Replace safe access expression with 'if' expression
|
||||||
safe.access.to.if.then.family=Replace Safe Access Expression with 'if' Expression
|
safe.access.to.if.then.family=Replace Safe Access Expression with 'if' Expression
|
||||||
merge.when=Merge 'when' expressions
|
merge.when=Merge 'when' expressions
|
||||||
|
|||||||
+11
-6
@@ -17,7 +17,8 @@
|
|||||||
package org.jetbrains.kotlin.idea.intentions.branchedTransformations.intentions
|
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 com.intellij.openapi.util.TextRange
|
||||||
|
import org.jetbrains.kotlin.idea.intentions.JetSelfTargetingRangeIntention
|
||||||
import org.jetbrains.kotlin.idea.intentions.branchedTransformations.convertToIfNotNullExpression
|
import org.jetbrains.kotlin.idea.intentions.branchedTransformations.convertToIfNotNullExpression
|
||||||
import org.jetbrains.kotlin.idea.intentions.branchedTransformations.introduceValueForCondition
|
import org.jetbrains.kotlin.idea.intentions.branchedTransformations.introduceValueForCondition
|
||||||
import org.jetbrains.kotlin.idea.intentions.branchedTransformations.isStableVariable
|
import org.jetbrains.kotlin.idea.intentions.branchedTransformations.isStableVariable
|
||||||
@@ -25,13 +26,17 @@ import org.jetbrains.kotlin.lexer.JetTokens
|
|||||||
import org.jetbrains.kotlin.psi.JetBinaryExpression
|
import org.jetbrains.kotlin.psi.JetBinaryExpression
|
||||||
import org.jetbrains.kotlin.psi.JetPsiUtil
|
import org.jetbrains.kotlin.psi.JetPsiUtil
|
||||||
|
|
||||||
public class ElvisToIfThenIntention : JetSelfTargetingOffsetIndependentIntention<JetBinaryExpression>("elvis.to.if.then", javaClass()) {
|
public class ElvisToIfThenIntention : JetSelfTargetingRangeIntention<JetBinaryExpression>(javaClass(), "Replace elvis expression with 'if' expression") {
|
||||||
override fun isApplicableTo(element: JetBinaryExpression): Boolean =
|
override fun applicabilityRange(element: JetBinaryExpression): TextRange? {
|
||||||
element.getOperationToken() == JetTokens.ELVIS
|
return if (element.getOperationToken() == JetTokens.ELVIS && element.getLeft() != null && element.getRight() != null)
|
||||||
|
element.getOperationReference().getTextRange()
|
||||||
|
else
|
||||||
|
null
|
||||||
|
}
|
||||||
|
|
||||||
override fun applyTo(element: JetBinaryExpression, editor: Editor) {
|
override fun applyTo(element: JetBinaryExpression, editor: Editor) {
|
||||||
val left = checkNotNull(JetPsiUtil.deparenthesize(element.getLeft()), "Left hand side of elvis expression cannot be null")
|
val left = JetPsiUtil.safeDeparenthesize(element.getLeft()!!)
|
||||||
val right = checkNotNull(JetPsiUtil.deparenthesize(element.getRight()), "Right hand side of elvis expression cannot be null")
|
val right = JetPsiUtil.safeDeparenthesize(element.getRight()!!)
|
||||||
|
|
||||||
val leftIsStable = left.isStableVariable()
|
val leftIsStable = left.isStableVariable()
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user