summaryrefslogtreecommitdiff
path: root/python/src/com/jetbrains/python/refactoring/PyReplaceExpressionUtil.java
diff options
context:
space:
mode:
Diffstat (limited to 'python/src/com/jetbrains/python/refactoring/PyReplaceExpressionUtil.java')
-rw-r--r--python/src/com/jetbrains/python/refactoring/PyReplaceExpressionUtil.java13
1 files changed, 9 insertions, 4 deletions
diff --git a/python/src/com/jetbrains/python/refactoring/PyReplaceExpressionUtil.java b/python/src/com/jetbrains/python/refactoring/PyReplaceExpressionUtil.java
index 2cebb3ec2720..4a8d2b9d8551 100644
--- a/python/src/com/jetbrains/python/refactoring/PyReplaceExpressionUtil.java
+++ b/python/src/com/jetbrains/python/refactoring/PyReplaceExpressionUtil.java
@@ -61,21 +61,26 @@ public class PyReplaceExpressionUtil implements PyElementTypes {
private PyReplaceExpressionUtil() {}
+ /**
+ * @param oldExpr old expression that will be substituted
+ * @param newExpr new expression to substitute with
+ * @return whether new expression should be wrapped in parenthesis to preserve original semantics
+ */
public static boolean isNeedParenthesis(@NotNull final PyElement oldExpr, @NotNull final PyElement newExpr) {
final PyElement parentExpr = (PyElement)oldExpr.getParent();
if (parentExpr instanceof PyArgumentList) {
return newExpr instanceof PyTupleExpression;
}
- if (!(parentExpr instanceof PyExpression)) {
+ if (parentExpr instanceof PyParenthesizedExpression || !(parentExpr instanceof PyExpression)) {
return false;
}
- int newPriority = getExpressionPriority(newExpr);
- int parentPriority = getExpressionPriority(parentExpr);
+ final int newPriority = getExpressionPriority(newExpr);
+ final int parentPriority = getExpressionPriority(parentExpr);
if (parentPriority > newPriority) {
return true;
} else if (parentPriority == newPriority && parentPriority != 0) {
if (parentExpr instanceof PyBinaryExpression) {
- PyBinaryExpression binaryExpression = (PyBinaryExpression)parentExpr;
+ final PyBinaryExpression binaryExpression = (PyBinaryExpression)parentExpr;
if (isNotAssociative(binaryExpression) && oldExpr.equals(binaryExpression.getRightExpression())) {
return true;
}