use of com.jetbrains.python.psi.PyBinaryExpression in project intellij-community by JetBrains.
the class ChainedComparisonsQuickFix method applyFix.
private void applyFix(@NotNull PyBinaryExpression leftExpression, @NotNull PyBinaryExpression rightExpression, @NotNull Project project) {
final PyElementGenerator elementGenerator = PyElementGenerator.getInstance(project);
final PyExpression newLeftExpression, newRightExpression;
final String operator;
if (myCommonIsInLeftLeft) {
newLeftExpression = invertExpression(leftExpression, elementGenerator);
} else {
newLeftExpression = leftExpression;
}
if (myCommonIsInRightLeft) {
operator = getLeftestOperator(rightExpression).getText();
newRightExpression = getLargeRightExpression(rightExpression, project);
} else {
operator = invertOperator(assertNotNull(rightExpression.getPsiOperator()));
final PyExpression rightLeftExpr = rightExpression.getLeftExpression();
if (rightLeftExpr instanceof PyBinaryExpression) {
newRightExpression = invertExpression((PyBinaryExpression) rightLeftExpr, elementGenerator);
} else {
newRightExpression = rightLeftExpr;
}
}
final PyBinaryExpression binaryExpression = elementGenerator.createBinaryExpression(operator, newLeftExpression, newRightExpression);
leftExpression.replace(binaryExpression);
rightExpression.delete();
}
use of com.jetbrains.python.psi.PyBinaryExpression in project intellij-community by JetBrains.
the class ChainedComparisonsQuickFix method invertExpression.
@NotNull
private static PyExpression invertExpression(@NotNull PyBinaryExpression expression, @NotNull PyElementGenerator elementGenerator) {
if (isComparisonExpression(expression)) {
final PyExpression left = expression.getLeftExpression();
final PyExpression right = expression.getRightExpression();
final String newOperator = invertOperator(assertNotNull(expression.getPsiOperator()));
final PyExpression newRight = isComparisonExpression(left) ? invertExpression((PyBinaryExpression) left, elementGenerator) : left;
return elementGenerator.createBinaryExpression(newOperator, right, newRight);
} else {
return expression;
}
}
use of com.jetbrains.python.psi.PyBinaryExpression in project intellij-community by JetBrains.
the class ComparisonWithNoneQuickFix method applyFix.
public void applyFix(@NotNull Project project, @NotNull ProblemDescriptor descriptor) {
PsiElement problemElement = descriptor.getPsiElement();
if (problemElement instanceof PyBinaryExpression) {
PyBinaryExpression binaryExpression = (PyBinaryExpression) problemElement;
PyElementType operator = binaryExpression.getOperator();
PyElementGenerator elementGenerator = PyElementGenerator.getInstance(project);
String temp;
temp = (operator == PyTokenTypes.EQEQ) ? "is" : "is not";
PyExpression expression = elementGenerator.createBinaryExpression(temp, binaryExpression.getLeftExpression(), binaryExpression.getRightExpression());
binaryExpression.replace(expression);
}
}
use of com.jetbrains.python.psi.PyBinaryExpression in project intellij-community by JetBrains.
the class ReplaceNotEqOperatorQuickFix method applyFix.
@Override
public void applyFix(@NotNull Project project, @NotNull ProblemDescriptor descriptor) {
PsiElement binaryExpression = descriptor.getPsiElement();
if (binaryExpression instanceof PyBinaryExpression) {
PsiElement operator = ((PyBinaryExpression) binaryExpression).getPsiOperator();
if (operator != null) {
PyElementGenerator elementGenerator = PyElementGenerator.getInstance(project);
operator.replace(elementGenerator.createFromText(LanguageLevel.forElement(binaryExpression), LeafPsiElement.class, "!="));
}
}
}
use of com.jetbrains.python.psi.PyBinaryExpression in project intellij-community by JetBrains.
the class ChainedComparisonsQuickFix method getLargeRightExpression.
@Nullable
private static PyExpression getLargeRightExpression(@NotNull PyBinaryExpression expression, @NotNull Project project) {
final PyElementGenerator elementGenerator = PyElementGenerator.getInstance(project);
PyExpression left = expression.getLeftExpression();
PyExpression right = expression.getRightExpression();
PsiElement operator = expression.getPsiOperator();
while (isComparisonExpression(left)) {
assert operator != null;
right = elementGenerator.createBinaryExpression(operator.getText(), ((PyBinaryExpression) left).getRightExpression(), right);
operator = ((PyBinaryExpression) left).getPsiOperator();
left = ((PyBinaryExpression) left).getLeftExpression();
}
return right;
}
Aggregations