Skip to content

Commit 05c12b2

Browse files
authored
[clang-format] Handle requires clause following a pointer type (#142893)
Fix #142818
1 parent 1728405 commit 05c12b2

File tree

2 files changed

+10
-0
lines changed

2 files changed

+10
-0
lines changed

clang/lib/Format/UnwrappedLineParser.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3485,6 +3485,7 @@ bool UnwrappedLineParser::parseRequires(bool SeenEqual) {
34853485
case tok::r_paren:
34863486
case tok::kw_noexcept:
34873487
case tok::kw_const:
3488+
case tok::star:
34883489
case tok::amp:
34893490
// This is a requires clause.
34903491
parseRequiresClause(RequiresToken);

clang/unittests/Format/TokenAnnotatorTest.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1453,6 +1453,15 @@ TEST_F(TokenAnnotatorTest, UnderstandsRequiresClausesAndConcepts) {
14531453
ASSERT_EQ(Tokens.size(), 17u) << Tokens;
14541454
EXPECT_TOKEN(Tokens[4], tok::ampamp, TT_PointerOrReference);
14551455
EXPECT_TOKEN(Tokens[5], tok::kw_requires, TT_RequiresClause);
1456+
1457+
Tokens = annotate("auto foo() -> auto *\n"
1458+
" requires(not bar)\n"
1459+
"{\n"
1460+
" return baz;\n"
1461+
"}");
1462+
ASSERT_EQ(Tokens.size(), 18u) << Tokens;
1463+
EXPECT_TOKEN(Tokens[7], tok::kw_requires, TT_RequiresClause);
1464+
EXPECT_TOKEN(Tokens[12], tok::l_brace, TT_FunctionLBrace);
14561465
}
14571466

14581467
TEST_F(TokenAnnotatorTest, UnderstandsRequiresExpressions) {

0 commit comments

Comments
 (0)