HazardyKnusperkeks created this revision. HazardyKnusperkeks added reviewers: owenpan, MyDeveloperDay, curdeius, JohelEGP, eoanermine. HazardyKnusperkeks added a project: clang-format. Herald added a project: All. HazardyKnusperkeks requested review of this revision. Herald added a project: clang. Herald added a subscriber: cfe-commits.
Fixes https://github.com/llvm/llvm-project/issues/56215 Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D129942 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 @@ -24711,6 +24711,18 @@ "struct S {};", Style); + Style = getLLVMStyle(); + Style.ConstructorInitializerIndentWidth = 4; + Style.BreakConstructorInitializers = FormatStyle::BCIS_BeforeColon; + Style.PackConstructorInitializers = FormatStyle::PCIS_Never; + verifyFormat("constexpr Foo(Foo const &other)\n" + " requires std::is_copy_constructible<T>\n" + " : value{other.value} {\n" + " do_magic();\n" + " do_more_magic();\n" + "}", + Style); + // Not a clause, but we once hit an assert. verifyFormat("#if 0\n" "#else\n" Index: clang/lib/Format/ContinuationIndenter.cpp =================================================================== --- clang/lib/Format/ContinuationIndenter.cpp +++ clang/lib/Format/ContinuationIndenter.cpp @@ -1193,6 +1193,10 @@ break; } } + if (NextNonComment->isOneOf(TT_CtorInitializerColon, TT_InheritanceColon, + TT_InheritanceComma)) { + return State.FirstIndent + Style.ConstructorInitializerIndentWidth; + } if ((PreviousNonComment && (PreviousNonComment->ClosesTemplateDeclaration || PreviousNonComment->ClosesRequiresClause || @@ -1267,10 +1271,6 @@ Style.BreakInheritanceList == FormatStyle::BILS_AfterColon) { return CurrentState.Indent; } - if (NextNonComment->isOneOf(TT_CtorInitializerColon, TT_InheritanceColon, - TT_InheritanceComma)) { - return State.FirstIndent + Style.ConstructorInitializerIndentWidth; - } if (Previous.is(tok::r_paren) && !Current.isBinaryOperator() && !Current.isOneOf(tok::colon, tok::comment)) { return ContinuationIndent;
Index: clang/unittests/Format/FormatTest.cpp =================================================================== --- clang/unittests/Format/FormatTest.cpp +++ clang/unittests/Format/FormatTest.cpp @@ -24711,6 +24711,18 @@ "struct S {};", Style); + Style = getLLVMStyle(); + Style.ConstructorInitializerIndentWidth = 4; + Style.BreakConstructorInitializers = FormatStyle::BCIS_BeforeColon; + Style.PackConstructorInitializers = FormatStyle::PCIS_Never; + verifyFormat("constexpr Foo(Foo const &other)\n" + " requires std::is_copy_constructible<T>\n" + " : value{other.value} {\n" + " do_magic();\n" + " do_more_magic();\n" + "}", + Style); + // Not a clause, but we once hit an assert. verifyFormat("#if 0\n" "#else\n" Index: clang/lib/Format/ContinuationIndenter.cpp =================================================================== --- clang/lib/Format/ContinuationIndenter.cpp +++ clang/lib/Format/ContinuationIndenter.cpp @@ -1193,6 +1193,10 @@ break; } } + if (NextNonComment->isOneOf(TT_CtorInitializerColon, TT_InheritanceColon, + TT_InheritanceComma)) { + return State.FirstIndent + Style.ConstructorInitializerIndentWidth; + } if ((PreviousNonComment && (PreviousNonComment->ClosesTemplateDeclaration || PreviousNonComment->ClosesRequiresClause || @@ -1267,10 +1271,6 @@ Style.BreakInheritanceList == FormatStyle::BILS_AfterColon) { return CurrentState.Indent; } - if (NextNonComment->isOneOf(TT_CtorInitializerColon, TT_InheritanceColon, - TT_InheritanceComma)) { - return State.FirstIndent + Style.ConstructorInitializerIndentWidth; - } if (Previous.is(tok::r_paren) && !Current.isBinaryOperator() && !Current.isOneOf(tok::colon, tok::comment)) { return ContinuationIndent;
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits