forked from OSchip/llvm-project
[clang-format] Don't break semi after requires clause ...
..regardless of the chosen style. Fixes https://github.com/llvm/llvm-project/issues/53818 Differential Revision: https://reviews.llvm.org/D120278
This commit is contained in:
parent
7ebb00a22e
commit
923c3755ea
|
@ -3963,7 +3963,7 @@ bool TokenAnnotator::mustBreakBefore(const AnnotatedLine &Line,
|
|||
return Style.BreakBeforeConceptDeclarations == FormatStyle::BBCDS_Always;
|
||||
return Style.AlwaysBreakTemplateDeclarations == FormatStyle::BTDS_Yes;
|
||||
}
|
||||
if (Left.ClosesRequiresClause) {
|
||||
if (Left.ClosesRequiresClause && Right.isNot(tok::semi)) {
|
||||
switch (Style.RequiresClausePosition) {
|
||||
case FormatStyle::RCPS_OwnLine:
|
||||
case FormatStyle::RCPS_WithPreceding:
|
||||
|
|
|
@ -23861,6 +23861,11 @@ TEST_F(FormatTest, RequiresClausesPositions) {
|
|||
"}",
|
||||
Style);
|
||||
|
||||
verifyFormat("template <typename T>\n"
|
||||
"int bar(T t)\n"
|
||||
" requires F<T>;",
|
||||
Style);
|
||||
|
||||
Style.IndentRequiresClause = false;
|
||||
verifyFormat("template <typename T>\n"
|
||||
"requires F<T>\n"
|
||||
|
@ -23881,6 +23886,7 @@ TEST_F(FormatTest, RequiresClausesPositions) {
|
|||
verifyFormat("template <typename T> requires Foo<T> struct Bar {};\n"
|
||||
"template <typename T> requires Foo<T> void bar() {}\n"
|
||||
"template <typename T> void bar() requires Foo<T> {}\n"
|
||||
"template <typename T> void bar() requires Foo<T>;\n"
|
||||
"template <typename T> requires Foo<T> Bar(T) -> Bar<T>;",
|
||||
Style);
|
||||
|
||||
|
@ -23933,6 +23939,9 @@ TEST_F(FormatTest, RequiresClausesPositions) {
|
|||
"void bar()\n"
|
||||
"requires Foo<T> {}\n"
|
||||
"template <typename T>\n"
|
||||
"void bar()\n"
|
||||
"requires Foo<T>;\n"
|
||||
"template <typename T>\n"
|
||||
"requires Foo<T> Bar(T) -> Bar<T>;",
|
||||
Style);
|
||||
|
||||
|
@ -23992,6 +24001,7 @@ TEST_F(FormatTest, RequiresClausesPositions) {
|
|||
"template <typename T>\n"
|
||||
"void bar() requires Foo<T>\n"
|
||||
"{}\n"
|
||||
"template <typename T> void bar() requires Foo<T>;\n"
|
||||
"template <typename T> requires Foo<T>\n"
|
||||
"Bar(T) -> Bar<T>;",
|
||||
Style);
|
||||
|
|
Loading…
Reference in New Issue