diff --git a/idea/src/org/jetbrains/kotlin/idea/intentions/SimplifyNegatedBinaryExpressionIntention.kt b/idea/src/org/jetbrains/kotlin/idea/intentions/SimplifyNegatedBinaryExpressionIntention.kt index 5f7784dcace..76df667c97a 100644 --- a/idea/src/org/jetbrains/kotlin/idea/intentions/SimplifyNegatedBinaryExpressionIntention.kt +++ b/idea/src/org/jetbrains/kotlin/idea/intentions/SimplifyNegatedBinaryExpressionIntention.kt @@ -17,12 +17,13 @@ package org.jetbrains.kotlin.idea.intentions import com.intellij.openapi.editor.Editor +import com.intellij.openapi.util.TextRange import com.intellij.psi.tree.IElementType import org.jetbrains.kotlin.lexer.JetSingleValueToken import org.jetbrains.kotlin.lexer.JetTokens import org.jetbrains.kotlin.psi.* -public class SimplifyNegatedBinaryExpressionIntention : JetSelfTargetingOffsetIndependentIntention(javaClass(), "Simplify negated binary expression") { +public class SimplifyNegatedBinaryExpressionIntention : JetSelfTargetingRangeIntention(javaClass(), "Simplify negated binary expression") { private fun IElementType.negate(): JetSingleValueToken? = when (this) { JetTokens.IN_KEYWORD -> JetTokens.NOT_IN @@ -43,7 +44,11 @@ public class SimplifyNegatedBinaryExpressionIntention : JetSelfTargetingOffsetIn else -> null } - override fun isApplicableTo(element: JetPrefixExpression): Boolean { + override fun applicabilityRange(element: JetPrefixExpression): TextRange? { + return if (isApplicableTo(element)) element.getOperationReference().getTextRange() else null + } + + public fun isApplicableTo(element: JetPrefixExpression): Boolean { if (element.getOperationToken() != JetTokens.EXCL) return false val expression = JetPsiUtil.deparenthesize(element.getBaseExpression()) as? JetOperationExpression ?: return false diff --git a/idea/testData/intentions/simplifyNegatedBinaryExpression/equals.kt b/idea/testData/intentions/simplifyNegatedBinaryExpression/equals.kt index d2fc1545eab..6c8342e1711 100644 --- a/idea/testData/intentions/simplifyNegatedBinaryExpression/equals.kt +++ b/idea/testData/intentions/simplifyNegatedBinaryExpression/equals.kt @@ -1,4 +1,4 @@ // INTENTION_TEXT: Simplify negated '==' expression to '!=' fun test(n: Int) { - !(0 == 1) + !(0 == 1) } \ No newline at end of file diff --git a/idea/testData/intentions/simplifyNegatedBinaryExpression/greaterThan.kt b/idea/testData/intentions/simplifyNegatedBinaryExpression/greaterThan.kt index fcd6fb4cb20..053a1042c04 100644 --- a/idea/testData/intentions/simplifyNegatedBinaryExpression/greaterThan.kt +++ b/idea/testData/intentions/simplifyNegatedBinaryExpression/greaterThan.kt @@ -1,4 +1,4 @@ // INTENTION_TEXT: Simplify negated '>' expression to '<=' fun test(n: Int) { - !(0 > 1) + !(0 > 1) } \ No newline at end of file diff --git a/idea/testData/intentions/simplifyNegatedBinaryExpression/greaterThanOrEquals.kt b/idea/testData/intentions/simplifyNegatedBinaryExpression/greaterThanOrEquals.kt index 759b2aa16b7..473cd495df9 100644 --- a/idea/testData/intentions/simplifyNegatedBinaryExpression/greaterThanOrEquals.kt +++ b/idea/testData/intentions/simplifyNegatedBinaryExpression/greaterThanOrEquals.kt @@ -1,4 +1,4 @@ // INTENTION_TEXT: Simplify negated '>=' expression to '<' fun test(n: Int) { - !(0 >= 1) + !(0 >= 1) } \ No newline at end of file diff --git a/idea/testData/intentions/simplifyNegatedBinaryExpression/in.kt b/idea/testData/intentions/simplifyNegatedBinaryExpression/in.kt index f6787ee667a..bd9c8ea4e95 100644 --- a/idea/testData/intentions/simplifyNegatedBinaryExpression/in.kt +++ b/idea/testData/intentions/simplifyNegatedBinaryExpression/in.kt @@ -5,5 +5,5 @@ class A(val e: Int) { fun test(n: Int) { val a = A(1) - !(0 in a) + !(0 in a) } diff --git a/idea/testData/intentions/simplifyNegatedBinaryExpression/inapplicableBinaryOperation.kt b/idea/testData/intentions/simplifyNegatedBinaryExpression/inapplicableBinaryOperation.kt index 69124a34777..6ea57272a84 100644 --- a/idea/testData/intentions/simplifyNegatedBinaryExpression/inapplicableBinaryOperation.kt +++ b/idea/testData/intentions/simplifyNegatedBinaryExpression/inapplicableBinaryOperation.kt @@ -1,5 +1,5 @@ // IS_APPLICABLE: false fun Int.lt(b: Int): Boolean = this < b fun test(n: Int) { - !(1 lt 2) + !(1 lt 2) } diff --git a/idea/testData/intentions/simplifyNegatedBinaryExpression/is.kt b/idea/testData/intentions/simplifyNegatedBinaryExpression/is.kt index b4c827f5a2d..57673a4939a 100644 --- a/idea/testData/intentions/simplifyNegatedBinaryExpression/is.kt +++ b/idea/testData/intentions/simplifyNegatedBinaryExpression/is.kt @@ -1,4 +1,4 @@ // INTENTION_TEXT: Simplify negated 'is' expression to '!is' fun test(n: Int) { - !(0 is Int) + !(0 is Int) } \ No newline at end of file diff --git a/idea/testData/intentions/simplifyNegatedBinaryExpression/lessThan.kt b/idea/testData/intentions/simplifyNegatedBinaryExpression/lessThan.kt index 078bc09821a..383fd03fc24 100644 --- a/idea/testData/intentions/simplifyNegatedBinaryExpression/lessThan.kt +++ b/idea/testData/intentions/simplifyNegatedBinaryExpression/lessThan.kt @@ -1,4 +1,4 @@ // INTENTION_TEXT: Simplify negated '<' expression to '>=' fun test(n: Int) { - !(0 < 1) + !(0 < 1) } \ No newline at end of file diff --git a/idea/testData/intentions/simplifyNegatedBinaryExpression/lessThanOrEquals.kt b/idea/testData/intentions/simplifyNegatedBinaryExpression/lessThanOrEquals.kt index 53f2fc2a80e..45cffa1a785 100644 --- a/idea/testData/intentions/simplifyNegatedBinaryExpression/lessThanOrEquals.kt +++ b/idea/testData/intentions/simplifyNegatedBinaryExpression/lessThanOrEquals.kt @@ -1,4 +1,4 @@ // INTENTION_TEXT: Simplify negated '<=' expression to '>' fun test(n: Int) { - !(0 <= 1) + !(0 <= 1) } \ No newline at end of file diff --git a/idea/testData/intentions/simplifyNegatedBinaryExpression/notEquals.kt b/idea/testData/intentions/simplifyNegatedBinaryExpression/notEquals.kt index 517b4d64e0a..64795ce61c5 100644 --- a/idea/testData/intentions/simplifyNegatedBinaryExpression/notEquals.kt +++ b/idea/testData/intentions/simplifyNegatedBinaryExpression/notEquals.kt @@ -1,4 +1,4 @@ // INTENTION_TEXT: Simplify negated '!=' expression to '==' fun test(n: Int) { - !(0 != 1) + !(0 != 1) } \ No newline at end of file diff --git a/idea/testData/intentions/simplifyNegatedBinaryExpression/notIn.kt b/idea/testData/intentions/simplifyNegatedBinaryExpression/notIn.kt index cdc5586efba..f046f987119 100644 --- a/idea/testData/intentions/simplifyNegatedBinaryExpression/notIn.kt +++ b/idea/testData/intentions/simplifyNegatedBinaryExpression/notIn.kt @@ -5,5 +5,5 @@ class A(val e: Int) { fun test(n: Int) { val a = A(1) - !(0 !in a) + !(0 !in a) } diff --git a/idea/testData/intentions/simplifyNegatedBinaryExpression/notIs.kt b/idea/testData/intentions/simplifyNegatedBinaryExpression/notIs.kt index d527dc16812..ac40c845584 100644 --- a/idea/testData/intentions/simplifyNegatedBinaryExpression/notIs.kt +++ b/idea/testData/intentions/simplifyNegatedBinaryExpression/notIs.kt @@ -1,4 +1,4 @@ // INTENTION_TEXT: Simplify negated '!is' expression to 'is' fun test(n: Int) { - !(0 !is Int) + !(0 !is Int) } \ No newline at end of file