Author: Owen Pan Date: 2023-09-15T14:20:41-07:00 New Revision: 5ed94c6e3d30d342b7bc74facbcd0740d080c156
URL: https://github.com/llvm/llvm-project/commit/5ed94c6e3d30d342b7bc74facbcd0740d080c156 DIFF: https://github.com/llvm/llvm-project/commit/5ed94c6e3d30d342b7bc74facbcd0740d080c156.diff LOG: [clang-format] Fix a bug in ContinuationIndenter (#66354) See https://reviews.llvm.org/D136154#3890747 for context. Fixes part of #58592. Added: Modified: clang/lib/Format/ContinuationIndenter.cpp clang/unittests/Format/FormatTest.cpp Removed: ################################################################################ diff --git a/clang/lib/Format/ContinuationIndenter.cpp b/clang/lib/Format/ContinuationIndenter.cpp index 17567572f030542..8ce7e5b8a2a2055 100644 --- a/clang/lib/Format/ContinuationIndenter.cpp +++ b/clang/lib/Format/ContinuationIndenter.cpp @@ -876,15 +876,15 @@ void ContinuationIndenter::addTokenOnCurrentLine(LineState &State, bool DryRun, FormatStyle::BCIS_AfterColon) { CurrentState.Indent = State.Column; CurrentState.LastSpace = State.Column; - } else if ((Previous.isOneOf(TT_BinaryOperator, TT_ConditionalExpr, - TT_CtorInitializerColon)) && + } else if (Previous.isOneOf(TT_ConditionalExpr, TT_CtorInitializerColon)) { + CurrentState.LastSpace = State.Column; + } else if (Previous.is(TT_BinaryOperator) && ((Previous.getPrecedence() != prec::Assignment && (Previous.isNot(tok::lessless) || Previous.OperatorIndex != 0 || Previous.NextOperator)) || Current.StartsBinaryExpression)) { // Indent relative to the RHS of the expression unless this is a simple - // assignment without binary expression on the RHS. Also indent relative to - // unary operators and the colons of constructor initializers. + // assignment without binary expression on the RHS. if (Style.BreakBeforeBinaryOperators == FormatStyle::BOS_None) CurrentState.LastSpace = State.Column; } else if (Previous.is(TT_InheritanceColon)) { diff --git a/clang/unittests/Format/FormatTest.cpp b/clang/unittests/Format/FormatTest.cpp index 4f72166bdce2d73..0d0fbdb84e3271b 100644 --- a/clang/unittests/Format/FormatTest.cpp +++ b/clang/unittests/Format/FormatTest.cpp @@ -7108,6 +7108,29 @@ TEST_F(FormatTest, ExpressionIndentationBreakingBeforeOperators) { "(someOtherLongishConditionPart1 || " "someOtherEvenLongerNestedConditionPart2);", Style); + + Style = getLLVMStyleWithColumns(20); + Style.AlignAfterOpenBracket = FormatStyle::BAS_AlwaysBreak; + Style.BinPackParameters = false; + Style.BreakBeforeBinaryOperators = FormatStyle::BOS_NonAssignment; + Style.ContinuationIndentWidth = 2; + verifyFormat("struct Foo {\n" + " Foo(\n" + " int arg1,\n" + " int arg2)\n" + " : Base(\n" + " arg1,\n" + " arg2) {}\n" + "};", + Style); + verifyFormat("return abc\n" + " ? foo(\n" + " a,\n" + " b,\n" + " bar(\n" + " abc))\n" + " : g(abc);", + Style); } TEST_F(FormatTest, ExpressionIndentationStrictAlign) { _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits