KT-5397 Simplify text of DeMorgan law conversion intentions

#KT-5397
This commit is contained in:
Evgeny Gerashchenko
2014-07-07 21:18:25 +04:00
parent 62bb3f8782
commit 8842bb574c
10 changed files with 27 additions and 7 deletions
@@ -292,8 +292,10 @@ add.braces=Add braces
add.braces.family=Add Braces
convert.negated.boolean.sequence=Replace negated sequence with DeMorgan equivalent
convert.negated.boolean.sequence.family=Replace Negated Sequence with DeMorgan Equivalent
convert.negated.expression.with.demorgans.law=Convert negated expression to DeMorgan equivalent
convert.negated.expression.with.demorgans.law.family=Convert Negated Expression to DeMorgan Equivalent
convert.negated.expression.with.demorgans.law=DeMorgan Law
convert.negated.expression.with.demorgans.law.andToOr=Replace '\\&\\&' with '||'
convert.negated.expression.with.demorgans.law.orToAnd=Replace '||' with '\\&\\&'
convert.negated.expression.with.demorgans.law.family=DeMorgan Law
split.if=Split into 2 if's
split.if.family=Split If
replace.with.operator.assign.intention=Replace with an operator-assign expression
@@ -30,6 +30,7 @@ import org.jetbrains.jet.lang.psi.JetConstantExpression
import org.jetbrains.jet.lang.psi.JetSimpleNameExpression
import java.util.ArrayList
import java.util.LinkedList
import org.jetbrains.jet.plugin.JetBundle
public class ConvertNegatedExpressionWithDemorgansLawIntention : JetSelfTargetingIntention<JetPrefixExpression>(
"convert.negated.expression.with.demorgans.law", javaClass()
@@ -41,10 +42,11 @@ public class ConvertNegatedExpressionWithDemorgansLawIntention : JetSelfTargetin
val parenthesizedExpression = element.getBaseExpression() as? JetParenthesizedExpression
val baseExpression = parenthesizedExpression?.getExpression() as? JetBinaryExpression ?: return false
val operatorToken = baseExpression.getOperationToken() ?: return false
if (!(operatorToken == JetTokens.ANDAND || operatorToken == JetTokens.OROR)) {
return false
when (baseExpression.getOperationToken()) {
JetTokens.ANDAND -> setText(JetBundle.message("convert.negated.expression.with.demorgans.law.andToOr"))
JetTokens.OROR -> setText(JetBundle.message("convert.negated.expression.with.demorgans.law.orToAnd"))
else -> return false
}
val elements = splitBooleanSequence(baseExpression) ?: return false
@@ -54,7 +56,7 @@ public class ConvertNegatedExpressionWithDemorgansLawIntention : JetSelfTargetin
override fun applyTo(element: JetPrefixExpression, editor: Editor) {
val parenthesizedExpression = element.getBaseExpression() as JetParenthesizedExpression
val baseExpression = parenthesizedExpression.getExpression() as JetBinaryExpression
val operatorText = when(baseExpression.getOperationToken()) {
val operatorText = when (baseExpression.getOperationToken()) {
JetTokens.ANDAND -> JetTokens.OROR.getValue()
JetTokens.OROR -> JetTokens.ANDAND.getValue()
else -> throw IllegalArgumentException(
@@ -70,7 +72,7 @@ public class ConvertNegatedExpressionWithDemorgansLawIntention : JetSelfTargetin
}
fun handleSpecial(expression: JetExpression): String {
return when(expression) {
return when (expression) {
is JetSimpleNameExpression, is JetConstantExpression, is JetPrefixExpression,
is JetParenthesizedExpression -> "!${expression.getText()}"
else -> "!(${expression.getText()})"
@@ -1,3 +1,5 @@
// INTENTION_TEXT: Replace '&&' with '||'
fun foo(a: Boolean, b: Boolean) : Boolean {
return !(<caret>a && b)
}
@@ -1,3 +1,5 @@
// INTENTION_TEXT: Replace '&&' with '||'
fun foo(a: Boolean, b: Boolean) : Boolean {
return !a || !b
}
@@ -1,3 +1,5 @@
// INTENTION_TEXT: Replace '&&' with '||'
fun foo(a: Boolean, b: Boolean, c: Boolean) : Boolean {
return !(a && <caret>(b && c))
}
@@ -1,3 +1,5 @@
// INTENTION_TEXT: Replace '&&' with '||'
fun foo(a: Boolean, b: Boolean, c: Boolean) : Boolean {
return !a || !(b && c)
}
@@ -1,3 +1,5 @@
// INTENTION_TEXT: Replace '||' with '&&'
fun foo(a: Boolean, b: Boolean) : Boolean {
return !(<caret>a || b)
}
@@ -1,3 +1,5 @@
// INTENTION_TEXT: Replace '||' with '&&'
fun foo(a: Boolean, b: Boolean) : Boolean {
return !a && !b
}
@@ -1,3 +1,5 @@
// INTENTION_TEXT: Replace '||' with '&&'
fun foo(a: Boolean, b: Boolean, c: Boolean) : Boolean {
return !(<caret>a || (b && c))
}
@@ -1,3 +1,5 @@
// INTENTION_TEXT: Replace '||' with '&&'
fun foo(a: Boolean, b: Boolean, c: Boolean) : Boolean {
return !a && !(b && c)
}