diff options
Diffstat (limited to 'clang/unittests/Format')
-rw-r--r-- | clang/unittests/Format/FormatTest.cpp | 29 | ||||
-rw-r--r-- | clang/unittests/Format/FormatTestComments.cpp | 19 | ||||
-rw-r--r-- | clang/unittests/Format/TokenAnnotatorTest.cpp | 23 |
3 files changed, 71 insertions, 0 deletions
diff --git a/clang/unittests/Format/FormatTest.cpp b/clang/unittests/Format/FormatTest.cpp index 0fb8139..ce68f91 100644 --- a/clang/unittests/Format/FormatTest.cpp +++ b/clang/unittests/Format/FormatTest.cpp @@ -18559,6 +18559,11 @@ TEST_F(FormatTest, AlignConsecutiveMacros) { "#define bbbb 4\n" "#define ccc (5)", Style); + + Style.ColumnLimit = 30; + verifyFormat("#define MY_FUNC(x) callMe(X)\n" + "#define MY_LONG_CONSTANT 17", + Style); } TEST_F(FormatTest, AlignConsecutiveAssignmentsAcrossEmptyLines) { @@ -20772,6 +20777,30 @@ TEST_F(FormatTest, AlignWithLineBreaks) { "}", Style); // clang-format on + + Style = getLLVMStyleWithColumns(70); + Style.AlignConsecutiveDeclarations.Enabled = true; + verifyFormat( + "ReturnType\n" + "MyFancyIntefaceFunction(Context *context,\n" + " ALongTypeName *response) noexcept override;\n" + "ReturnType func();", + Style); + + verifyFormat( + "ReturnType\n" + "MyFancyIntefaceFunction(B<int> *context,\n" + " decltype(AFunc) *response) noexcept override;\n" + "ReturnType func();", + Style); + + Style.AlignConsecutiveAssignments.Enabled = true; + Style.ColumnLimit = 15; + verifyFormat("int i1 = 1;\n" + "k = bar(\n" + " argument1,\n" + " argument2);", + Style); } TEST_F(FormatTest, AlignWithInitializerPeriods) { diff --git a/clang/unittests/Format/FormatTestComments.cpp b/clang/unittests/Format/FormatTestComments.cpp index fc80bf4..6b433bb 100644 --- a/clang/unittests/Format/FormatTestComments.cpp +++ b/clang/unittests/Format/FormatTestComments.cpp @@ -839,6 +839,25 @@ TEST_F(FormatTestComments, MultiLineCommentsInDefines) { getLLVMStyleWithColumns(17))); } +TEST_F(FormatTestComments, LineCommentsInMacrosDoNotGetEscapedNewlines) { + FormatStyle Style = getLLVMStyleWithColumns(0); + Style.ReflowComments = FormatStyle::RCS_Never; + verifyFormat("#define FOO (1U) // comment\n" + " // comment", + Style); + + Style.ColumnLimit = 32; + verifyFormat("#define SOME_MACRO(x) x\n" + "#define FOO \\\n" + " SOME_MACRO(1) + \\\n" + " SOME_MACRO(2) // comment\n" + " // comment", + "#define SOME_MACRO(x) x\n" + "#define FOO SOME_MACRO(1) + SOME_MACRO(2) // comment\n" + " // comment", + Style); +} + TEST_F(FormatTestComments, ParsesCommentsAdjacentToPPDirectives) { EXPECT_EQ("namespace {}\n// Test\n#define A", format("namespace {}\n // Test\n#define A")); diff --git a/clang/unittests/Format/TokenAnnotatorTest.cpp b/clang/unittests/Format/TokenAnnotatorTest.cpp index 1002515..ca99940 100644 --- a/clang/unittests/Format/TokenAnnotatorTest.cpp +++ b/clang/unittests/Format/TokenAnnotatorTest.cpp @@ -4237,6 +4237,29 @@ TEST_F(TokenAnnotatorTest, QtProperty) { EXPECT_TOKEN(Tokens[12], tok::identifier, TT_QtProperty); } +TEST_F(TokenAnnotatorTest, AttributeSquares) { + auto Tokens = annotate("[[maybe_unused]] const int i;"); + ASSERT_EQ(Tokens.size(), 10u) << Tokens; + EXPECT_TOKEN(Tokens[0], tok::l_square, TT_AttributeLSquare); + EXPECT_TOKEN(Tokens[1], tok::l_square, TT_Unknown); + EXPECT_TOKEN(Tokens[3], tok::r_square, TT_Unknown); + EXPECT_TOKEN(Tokens[4], tok::r_square, TT_AttributeRSquare); + EXPECT_TRUE(Tokens[4]->EndsCppAttributeGroup); + + Tokens = annotate("[[foo([[]])]] [[maybe_unused]] int j;"); + ASSERT_EQ(Tokens.size(), 20u) << Tokens; + EXPECT_TOKEN(Tokens[0], tok::l_square, TT_AttributeLSquare); + EXPECT_TOKEN(Tokens[1], tok::l_square, TT_Unknown); + EXPECT_TOKEN(Tokens[9], tok::r_square, TT_Unknown); + EXPECT_TOKEN(Tokens[10], tok::r_square, TT_AttributeRSquare); + EXPECT_FALSE(Tokens[10]->EndsCppAttributeGroup); + EXPECT_TOKEN(Tokens[11], tok::l_square, TT_AttributeLSquare); + EXPECT_TOKEN(Tokens[12], tok::l_square, TT_Unknown); + EXPECT_TOKEN(Tokens[14], tok::r_square, TT_Unknown); + EXPECT_TOKEN(Tokens[15], tok::r_square, TT_AttributeRSquare); + EXPECT_TRUE(Tokens[15]->EndsCppAttributeGroup); +} + } // namespace } // namespace format } // namespace clang |