]> granicus.if.org Git - clang/commitdiff
clang-format: Fix merging of _T macros.
authorDaniel Jasper <djasper@google.com>
Thu, 26 Mar 2015 14:47:35 +0000 (14:47 +0000)
committerDaniel Jasper <djasper@google.com>
Thu, 26 Mar 2015 14:47:35 +0000 (14:47 +0000)
NewlinesBefore and HasUnescapedNewline were not properly propagated
leading to llvm.org/PR23032.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@233276 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Format/Format.cpp
unittests/Format/FormatTest.cpp

index a243a1f3157355d580bb56fce06ac99b4e1db4aa..b44ea5dc6d5f3ccec051f8b28f187c835ffedb4b 100644 (file)
@@ -862,6 +862,8 @@ private:
     String->OriginalColumn = Macro->OriginalColumn;
     String->ColumnWidth = encoding::columnWidthWithTabs(
         String->TokenText, String->OriginalColumn, Style.TabWidth, Encoding);
+    String->NewlinesBefore = Macro->NewlinesBefore;
+    String->HasUnescapedNewline = Macro->HasUnescapedNewline;
 
     Tokens.pop_back();
     Tokens.pop_back();
index 3887ca0f22800844c5ac4ae3a991920a777a4b62..c57eaa95a9392e5f26e064b5ab9917ab88ffd560 100644 (file)
@@ -7630,6 +7630,22 @@ TEST_F(FormatTest, BreaksStringLiteralsWithin_TMacro) {
   EXPECT_EQ(
       "_T ( \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\" )",
       format("  _T ( \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\" )", Style));
+  EXPECT_EQ("f(\n"
+            "#if !TEST\n"
+            "    _T(\"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXn\")\n"
+            "#endif\n"
+            "    );",
+            format("f(\n"
+                   "#if !TEST\n"
+                   "_T(\"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXn\")\n"
+                   "#endif\n"
+                   ");"));
+  EXPECT_EQ("f(\n"
+            "\n"
+            "    _T(\"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXn\"));",
+            format("f(\n"
+                   "\n"
+                   "_T(\"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXn\"));"));
 }
 
 TEST_F(FormatTest, DontSplitStringLiteralsWithEscapedNewlines) {