Skip to content

Commit 4b322f6

Browse files
owencatru
authored andcommitted
[clang-format] Handle template opener/closer in braced list (llvm#112494)
Fixes llvm#112487. (cherry picked from commit 67f576f)
1 parent 108ab46 commit 4b322f6

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
@@ -2500,6 +2500,11 @@ bool UnwrappedLineParser::parseBracedList(bool IsAngleBracket, bool IsEnum) {
25002500
// Assume there are no blocks inside a braced init list apart
25012501
// from the ones we explicitly parse out (like lambdas).
25022502
FormatTok->setBlockKind(BK_BracedInit);
2503+
if (!IsAngleBracket) {
2504+
auto *Prev = FormatTok->Previous;
2505+
if (Prev && Prev->is(tok::greater))
2506+
Prev->setFinalizedType(TT_TemplateCloser);
2507+
}
25032508
nextToken();
25042509
parseBracedList();
25052510
break;

clang/unittests/Format/TokenAnnotatorTest.cpp

+6
Original file line numberDiff line numberDiff line change
@@ -3404,6 +3404,12 @@ TEST_F(TokenAnnotatorTest, TemplateInstantiation) {
34043404
ASSERT_EQ(Tokens.size(), 21u) << Tokens;
34053405
EXPECT_TOKEN(Tokens[4], tok::less, TT_TemplateOpener);
34063406
EXPECT_TOKEN(Tokens[16], tok::greater, TT_TemplateCloser);
3407+
3408+
Tokens =
3409+
annotate("auto x{std::conditional_t<T::value == U::value, T, U>{}};");
3410+
ASSERT_EQ(Tokens.size(), 24u) << Tokens;
3411+
EXPECT_TOKEN(Tokens[6], tok::less, TT_TemplateOpener);
3412+
EXPECT_TOKEN(Tokens[18], tok::greater, TT_TemplateCloser);
34073413
}
34083414

34093415
} // namespace

0 commit comments

Comments
 (0)