diff --git a/clang/lib/Format/UnwrappedLineParser.cpp b/clang/lib/Format/UnwrappedLineParser.cpp --- a/clang/lib/Format/UnwrappedLineParser.cpp +++ b/clang/lib/Format/UnwrappedLineParser.cpp @@ -2108,6 +2108,7 @@ case tok::l_square: parseSquare(); break; + case tok::kw_auto: case tok::kw_class: case tok::kw_template: case tok::kw_typename: diff --git a/clang/unittests/Format/TokenAnnotatorTest.cpp b/clang/unittests/Format/TokenAnnotatorTest.cpp --- a/clang/unittests/Format/TokenAnnotatorTest.cpp +++ b/clang/unittests/Format/TokenAnnotatorTest.cpp @@ -747,6 +747,21 @@ ASSERT_EQ(Tokens.size(), 8u) << Tokens; EXPECT_TOKEN(Tokens[0], tok::l_square, TT_LambdaLSquare); EXPECT_TOKEN(Tokens[5], tok::l_brace, TT_LambdaLBrace); + + Tokens = annotate("[]() -> auto {}"); + ASSERT_EQ(Tokens.size(), 9u) << Tokens; + EXPECT_TOKEN(Tokens[4], tok::arrow, TT_LambdaArrow); + EXPECT_TOKEN(Tokens[6], tok::l_brace, TT_LambdaLBrace); + + Tokens = annotate("[]() -> auto & {}"); + ASSERT_EQ(Tokens.size(), 10u) << Tokens; + EXPECT_TOKEN(Tokens[4], tok::arrow, TT_LambdaArrow); + EXPECT_TOKEN(Tokens[7], tok::l_brace, TT_LambdaLBrace); + + Tokens = annotate("[]() -> auto * {}"); + ASSERT_EQ(Tokens.size(), 10u) << Tokens; + EXPECT_TOKEN(Tokens[4], tok::arrow, TT_LambdaArrow); + EXPECT_TOKEN(Tokens[7], tok::l_brace, TT_LambdaLBrace); } } // namespace