Skip to content

Commit 67f576f

Browse files
authored
[clang-format] Handle template opener/closer in braced list (llvm#112494)
Fixes llvm#112487.
1 parent 9c6f85f commit 67f576f

File tree

2 files changed

+11
-0
lines changed

2 files changed

+11
-0
lines changed

clang/lib/Format/UnwrappedLineParser.cpp

+5
Original file line numberDiff line numberDiff line change
@@ -2504,6 +2504,11 @@ bool UnwrappedLineParser::parseBracedList(bool IsAngleBracket, bool IsEnum) {
25042504
// Assume there are no blocks inside a braced init list apart
25052505
// from the ones we explicitly parse out (like lambdas).
25062506
FormatTok->setBlockKind(BK_BracedInit);
2507+
if (!IsAngleBracket) {
2508+
auto *Prev = FormatTok->Previous;
2509+
if (Prev && Prev->is(tok::greater))
2510+
Prev->setFinalizedType(TT_TemplateCloser);
2511+
}
25072512
nextToken();
25082513
parseBracedList();
25092514
break;

clang/unittests/Format/TokenAnnotatorTest.cpp

+6
Original file line numberDiff line numberDiff line change
@@ -3554,6 +3554,12 @@ TEST_F(TokenAnnotatorTest, TemplateInstantiation) {
35543554
ASSERT_EQ(Tokens.size(), 21u) << Tokens;
35553555
EXPECT_TOKEN(Tokens[4], tok::less, TT_TemplateOpener);
35563556
EXPECT_TOKEN(Tokens[16], tok::greater, TT_TemplateCloser);
3557+
3558+
Tokens =
3559+
annotate("auto x{std::conditional_t<T::value == U::value, T, U>{}};");
3560+
ASSERT_EQ(Tokens.size(), 24u) << Tokens;
3561+
EXPECT_TOKEN(Tokens[6], tok::less, TT_TemplateOpener);
3562+
EXPECT_TOKEN(Tokens[18], tok::greater, TT_TemplateCloser);
35573563
}
35583564

35593565
} // namespace

0 commit comments

Comments
 (0)