diff --git a/python/src/com/jetbrains/python/formatter/PyBlock.java b/python/src/com/jetbrains/python/formatter/PyBlock.java index c275cb567223..b974e2cbcfe4 100644 --- a/python/src/com/jetbrains/python/formatter/PyBlock.java +++ b/python/src/com/jetbrains/python/formatter/PyBlock.java @@ -79,7 +79,7 @@ public class PyBlock implements ASTBlock { PyElementTypes.FROM_IMPORT_STATEMENT); public static final Key IMPORT_GROUP_BEGIN = Key.create("com.jetbrains.python.formatter.importGroupBegin"); - private static final boolean ALIGN_IF_CONDITION_WITHOUT_PARENTHESES = false; + private static final boolean ALIGN_CONDITIONS_WITHOUT_PARENTHESES = false; @NotNull public static PyBlock createBlock(@Nullable PyBlock parent, @@ -258,7 +258,7 @@ public class PyBlock implements ASTBlock { } if (childAlignment == null && topmostBinary != null && !isParenthesisedIfCondition(topmostBinary.myNode) && - !(isIfCondition(topmostBinary.myNode) && !ALIGN_IF_CONDITION_WITHOUT_PARENTHESES)) { + !(isCondition(topmostBinary.myNode) && !ALIGN_CONDITIONS_WITHOUT_PARENTHESES)) { childAlignment = topmostBinary.getAlignmentForChildren(); } childIndent = Indent.getContinuationWithoutFirstIndent(); @@ -431,15 +431,17 @@ public class PyBlock implements ASTBlock { return parens != null && isIfCondition(parens); } - private static boolean isIfCondition(@NotNull ASTNode node) { - return isIfCondition(node.getPsi(PyExpression.class)); - } - private static boolean isIfCondition(@NotNull PyExpression expr) { final PyIfPart ifPart = as(expr.getParent(), PyIfPart.class); return ifPart != null && ifPart.getCondition() == expr && !ifPart.isElif(); } + private static boolean isCondition(@NotNull ASTNode node) { + final PsiElement element = node.getPsi(); + final PyConditionalStatementPart conditionalStatement = as(element.getParent(), PyConditionalStatementPart.class); + return conditionalStatement != null && conditionalStatement.getCondition() == element; + } + @Nullable private PyBlock findTopmostBinaryExpressionBlock(@NotNull ASTNode child) { assert child.getElementType() != PyElementTypes.BINARY_EXPRESSION; diff --git a/python/testData/formatter/multilineElifCondition_after.py b/python/testData/formatter/multilineElifCondition_after.py index d159919229c7..e93ac3d2c4de 100644 --- a/python/testData/formatter/multilineElifCondition_after.py +++ b/python/testData/formatter/multilineElifCondition_after.py @@ -2,8 +2,8 @@ if foo and \ bar == 42: pass elif foo and \ - bar: + bar: pass elif foo and \ - bar == 24: + bar == 24: pass