KT-5397 Simplify text of DeMorgan law conversion intentions
#KT-5397
This commit is contained in:
@@ -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
|
||||
|
||||
+7
-5
@@ -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()})"
|
||||
|
||||
+2
@@ -1,3 +1,5 @@
|
||||
// INTENTION_TEXT: Replace '&&' with '||'
|
||||
|
||||
fun foo(a: Boolean, b: Boolean) : Boolean {
|
||||
return !(<caret>a && b)
|
||||
}
|
||||
+2
@@ -1,3 +1,5 @@
|
||||
// INTENTION_TEXT: Replace '&&' with '||'
|
||||
|
||||
fun foo(a: Boolean, b: Boolean) : Boolean {
|
||||
return !a || !b
|
||||
}
|
||||
+2
@@ -1,3 +1,5 @@
|
||||
// INTENTION_TEXT: Replace '&&' with '||'
|
||||
|
||||
fun foo(a: Boolean, b: Boolean, c: Boolean) : Boolean {
|
||||
return !(a && <caret>(b && c))
|
||||
}
|
||||
+2
@@ -1,3 +1,5 @@
|
||||
// INTENTION_TEXT: Replace '&&' with '||'
|
||||
|
||||
fun foo(a: Boolean, b: Boolean, c: Boolean) : Boolean {
|
||||
return !a || !(b && c)
|
||||
}
|
||||
+2
@@ -1,3 +1,5 @@
|
||||
// INTENTION_TEXT: Replace '||' with '&&'
|
||||
|
||||
fun foo(a: Boolean, b: Boolean) : Boolean {
|
||||
return !(<caret>a || b)
|
||||
}
|
||||
+2
@@ -1,3 +1,5 @@
|
||||
// INTENTION_TEXT: Replace '||' with '&&'
|
||||
|
||||
fun foo(a: Boolean, b: Boolean) : Boolean {
|
||||
return !a && !b
|
||||
}
|
||||
+2
@@ -1,3 +1,5 @@
|
||||
// INTENTION_TEXT: Replace '||' with '&&'
|
||||
|
||||
fun foo(a: Boolean, b: Boolean, c: Boolean) : Boolean {
|
||||
return !(<caret>a || (b && c))
|
||||
}
|
||||
+2
@@ -1,3 +1,5 @@
|
||||
// INTENTION_TEXT: Replace '||' with '&&'
|
||||
|
||||
fun foo(a: Boolean, b: Boolean, c: Boolean) : Boolean {
|
||||
return !a && !(b && c)
|
||||
}
|
||||
Reference in New Issue
Block a user