Author: Tobias Hieta Date: 2022-05-20T16:11:20+02:00 New Revision: 749fb33e82ff19d656af9c9205f3ac81c1ce52d8
URL: https://github.com/llvm/llvm-project/commit/749fb33e82ff19d656af9c9205f3ac81c1ce52d8 DIFF: https://github.com/llvm/llvm-project/commit/749fb33e82ff19d656af9c9205f3ac81c1ce52d8.diff LOG: [clang-format] Don't break lines after pragma region We have autogenerated pragma regions in our code which where awkwardly broken up like this: ``` #pragma region foo(bar : hello) ``` becomes ``` #pragma region foo(bar \ : hello) ``` This fixes the problem by adding region as a keyword and handling it the same way as pragma mark Reviewed By: curdeius Differential Revision: https://reviews.llvm.org/D125961 Added: Modified: clang/lib/Format/FormatToken.h clang/lib/Format/TokenAnnotator.cpp clang/unittests/Format/FormatTest.cpp Removed: ################################################################################ diff --git a/clang/lib/Format/FormatToken.h b/clang/lib/Format/FormatToken.h index 9990933fcb20..71acdf2f094b 100644 --- a/clang/lib/Format/FormatToken.h +++ b/clang/lib/Format/FormatToken.h @@ -930,6 +930,7 @@ struct AdditionalKeywords { kw___has_include_next = &IdentTable.get("__has_include_next"); kw_mark = &IdentTable.get("mark"); + kw_region = &IdentTable.get("region"); kw_extend = &IdentTable.get("extend"); kw_option = &IdentTable.get("option"); @@ -1053,6 +1054,7 @@ struct AdditionalKeywords { // Pragma keywords. IdentifierInfo *kw_mark; + IdentifierInfo *kw_region; // Proto keywords. IdentifierInfo *kw_extend; diff --git a/clang/lib/Format/TokenAnnotator.cpp b/clang/lib/Format/TokenAnnotator.cpp index 68f35643bbf2..9afe4f8fb086 100644 --- a/clang/lib/Format/TokenAnnotator.cpp +++ b/clang/lib/Format/TokenAnnotator.cpp @@ -1251,9 +1251,9 @@ class AnnotatingParser { void parsePragma() { next(); // Consume "pragma". if (CurrentToken && - CurrentToken->isOneOf(Keywords.kw_mark, Keywords.kw_option)) { + CurrentToken->isOneOf(Keywords.kw_mark, Keywords.kw_option, Keywords.kw_region)) { bool IsMark = CurrentToken->is(Keywords.kw_mark); - next(); // Consume "mark". + next(); next(); // Consume first token (so we fix leading whitespace). while (CurrentToken) { if (IsMark || CurrentToken->Previous->is(TT_BinaryOperator)) diff --git a/clang/unittests/Format/FormatTest.cpp b/clang/unittests/Format/FormatTest.cpp index e54a6db2ca46..762ccf7dbd8d 100644 --- a/clang/unittests/Format/FormatTest.cpp +++ b/clang/unittests/Format/FormatTest.cpp @@ -19597,6 +19597,13 @@ TEST_F(FormatTest, UnderstandPragmaOption) { EXPECT_EQ("#pragma option -C -A", format("#pragma option -C -A")); } +TEST_F(FormatTest, UnderstandPragmaRegion) { + auto Style = getLLVMStyleWithColumns(0); + verifyFormat("#pragma region TEST(FOO : BAR)", Style); + + EXPECT_EQ("#pragma region TEST(FOO : BAR)", format("#pragma region TEST(FOO : BAR)", Style)); +} + TEST_F(FormatTest, OptimizeBreakPenaltyVsExcess) { FormatStyle Style = getLLVMStyleWithColumns(20); _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits