This revision was automatically updated to reflect the committed changes. Closed by commit rGb18c63e85aa8: [clang-format] use spaces for alignment of binary/ternary expressions with… (authored by fickert, committed by curdeius).
Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D85600/new/ https://reviews.llvm.org/D85600 Files: clang/lib/Format/ContinuationIndenter.cpp clang/unittests/Format/FormatTest.cpp Index: clang/unittests/Format/FormatTest.cpp =================================================================== --- clang/unittests/Format/FormatTest.cpp +++ clang/unittests/Format/FormatTest.cpp @@ -11259,6 +11259,23 @@ "\t}\n" "};", Tab); + Tab.AlignOperands = FormatStyle::OAS_Align; + verifyFormat("int aaaaaaaaaa = bbbbbbbbbbbbbbbbbbbb +\n" + " cccccccccccccccccccc;", + Tab); + // no alignment + verifyFormat("int aaaaaaaaaa =\n" + "\tbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb;", + Tab); + verifyFormat("return aaaaaaaaaaaaaaaa ? 111111111111111\n" + " : bbbbbbbbbbbbbb ? 222222222222222\n" + " : 333333333333333;", + Tab); + Tab.BreakBeforeBinaryOperators = FormatStyle::BOS_All; + Tab.AlignOperands = FormatStyle::OAS_AlignAfterOperator; + verifyFormat("int aaaaaaaaaa = bbbbbbbbbbbbbbbbbbbb\n" + " + cccccccccccccccccccc;", + Tab); } TEST_F(FormatTest, ZeroTabWidth) { Index: clang/lib/Format/ContinuationIndenter.cpp =================================================================== --- clang/lib/Format/ContinuationIndenter.cpp +++ clang/lib/Format/ContinuationIndenter.cpp @@ -1348,16 +1348,20 @@ State.Stack.back().LastSpace); } - // If BreakBeforeBinaryOperators is set, un-indent a bit to account for - // the operator and keep the operands aligned - if (Style.AlignOperands == FormatStyle::OAS_AlignAfterOperator && - Previous && + if (Previous && (Previous->getPrecedence() == prec::Assignment || Previous->is(tok::kw_return) || (*I == prec::Conditional && Previous->is(tok::question) && Previous->is(TT_ConditionalExpr))) && - !Newline) - NewParenState.UnindentOperator = true; + !Newline) { + // If BreakBeforeBinaryOperators is set, un-indent a bit to account for + // the operator and keep the operands aligned + if (Style.AlignOperands == FormatStyle::OAS_AlignAfterOperator) + NewParenState.UnindentOperator = true; + // Mark indentation as alignment if the expression is aligned. + if (Style.AlignOperands != FormatStyle::OAS_DontAlign) + NewParenState.IsAligned = true; + } // Do not indent relative to the fake parentheses inserted for "." or "->". // This is a special case to make the following to statements consistent:
Index: clang/unittests/Format/FormatTest.cpp =================================================================== --- clang/unittests/Format/FormatTest.cpp +++ clang/unittests/Format/FormatTest.cpp @@ -11259,6 +11259,23 @@ "\t}\n" "};", Tab); + Tab.AlignOperands = FormatStyle::OAS_Align; + verifyFormat("int aaaaaaaaaa = bbbbbbbbbbbbbbbbbbbb +\n" + " cccccccccccccccccccc;", + Tab); + // no alignment + verifyFormat("int aaaaaaaaaa =\n" + "\tbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb;", + Tab); + verifyFormat("return aaaaaaaaaaaaaaaa ? 111111111111111\n" + " : bbbbbbbbbbbbbb ? 222222222222222\n" + " : 333333333333333;", + Tab); + Tab.BreakBeforeBinaryOperators = FormatStyle::BOS_All; + Tab.AlignOperands = FormatStyle::OAS_AlignAfterOperator; + verifyFormat("int aaaaaaaaaa = bbbbbbbbbbbbbbbbbbbb\n" + " + cccccccccccccccccccc;", + Tab); } TEST_F(FormatTest, ZeroTabWidth) { Index: clang/lib/Format/ContinuationIndenter.cpp =================================================================== --- clang/lib/Format/ContinuationIndenter.cpp +++ clang/lib/Format/ContinuationIndenter.cpp @@ -1348,16 +1348,20 @@ State.Stack.back().LastSpace); } - // If BreakBeforeBinaryOperators is set, un-indent a bit to account for - // the operator and keep the operands aligned - if (Style.AlignOperands == FormatStyle::OAS_AlignAfterOperator && - Previous && + if (Previous && (Previous->getPrecedence() == prec::Assignment || Previous->is(tok::kw_return) || (*I == prec::Conditional && Previous->is(tok::question) && Previous->is(TT_ConditionalExpr))) && - !Newline) - NewParenState.UnindentOperator = true; + !Newline) { + // If BreakBeforeBinaryOperators is set, un-indent a bit to account for + // the operator and keep the operands aligned + if (Style.AlignOperands == FormatStyle::OAS_AlignAfterOperator) + NewParenState.UnindentOperator = true; + // Mark indentation as alignment if the expression is aligned. + if (Style.AlignOperands != FormatStyle::OAS_DontAlign) + NewParenState.IsAligned = true; + } // Do not indent relative to the fake parentheses inserted for "." or "->". // This is a special case to make the following to statements consistent:
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits