https://github.com/owenca updated https://github.com/llvm/llvm-project/pull/94119
>From 0ef24a51b4f831c49efe956662764f0b2c2cca61 Mon Sep 17 00:00:00 2001 From: Owen Pan <owenpi...@gmail.com> Date: Sat, 1 Jun 2024 12:53:08 -0700 Subject: [PATCH 1/2] [clang-format] Handle attributes before lambda return arrow Fixes #92657. --- clang/lib/Format/UnwrappedLineParser.cpp | 2 +- clang/unittests/Format/FormatTest.cpp | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/clang/lib/Format/UnwrappedLineParser.cpp b/clang/lib/Format/UnwrappedLineParser.cpp index 5c0ff0f6132b2..053fd3d4df559 100644 --- a/clang/lib/Format/UnwrappedLineParser.cpp +++ b/clang/lib/Format/UnwrappedLineParser.cpp @@ -2236,7 +2236,7 @@ bool UnwrappedLineParser::tryToParseLambda() { bool InTemplateParameterList = false; while (FormatTok->isNot(tok::l_brace)) { - if (FormatTok->isTypeName(LangOpts)) { + if (FormatTok->isTypeName(LangOpts) || FormatTok->isAttribute()) { nextToken(); continue; } diff --git a/clang/unittests/Format/FormatTest.cpp b/clang/unittests/Format/FormatTest.cpp index 59f1ff6a4b296..6057d5b724bf9 100644 --- a/clang/unittests/Format/FormatTest.cpp +++ b/clang/unittests/Format/FormatTest.cpp @@ -22664,6 +22664,7 @@ TEST_F(FormatTest, FormatsLambdas) { verifyFormat("SomeFunction({[]() -> int *[] { return {}; }});"); verifyFormat("SomeFunction({[]() -> int (*)[] { return {}; }});"); verifyFormat("SomeFunction({[]() -> ns::type<int (*)[]> { return {}; }});"); + verifyFormat("foo([&](u32 bar) __attribute__((always_inline)) -> void {});"); verifyFormat("return int{[x = x]() { return x; }()};"); // Lambdas with explicit template argument lists. >From 189ec3ee752d2cd625a8226c0ede028c32b1d986 Mon Sep 17 00:00:00 2001 From: Owen Pan <owenpi...@gmail.com> Date: Sat, 1 Jun 2024 15:12:55 -0700 Subject: [PATCH 2/2] Added an annotator test. --- clang/unittests/Format/TokenAnnotatorTest.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/clang/unittests/Format/TokenAnnotatorTest.cpp b/clang/unittests/Format/TokenAnnotatorTest.cpp index 3339a749df3a5..df268f49e1eca 100644 --- a/clang/unittests/Format/TokenAnnotatorTest.cpp +++ b/clang/unittests/Format/TokenAnnotatorTest.cpp @@ -1577,6 +1577,12 @@ TEST_F(TokenAnnotatorTest, UnderstandsLambdas) { EXPECT_TOKEN(Tokens[2], tok::arrow, TT_TrailingReturnArrow); EXPECT_TOKEN(Tokens[4], tok::l_brace, TT_LambdaLBrace); + Tokens = annotate("foo([&](u32 bar) __attribute__((attr)) -> void {});"); + ASSERT_EQ(Tokens.size(), 22u) << Tokens; + EXPECT_TOKEN(Tokens[2], tok::l_square, TT_LambdaLSquare); + EXPECT_TOKEN(Tokens[15], tok::arrow, TT_TrailingReturnArrow); + EXPECT_TOKEN(Tokens[17], tok::l_brace, TT_LambdaLBrace); + Tokens = annotate("[] <typename T> () {}"); ASSERT_EQ(Tokens.size(), 11u) << Tokens; EXPECT_TOKEN(Tokens[0], tok::l_square, TT_LambdaLSquare); _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits