]> granicus.if.org Git - clang/commitdiff
Fix bug that would lead to joining preprocessor directives.
authorDaniel Jasper <djasper@google.com>
Mon, 14 Jan 2013 15:52:06 +0000 (15:52 +0000)
committerDaniel Jasper <djasper@google.com>
Mon, 14 Jan 2013 15:52:06 +0000 (15:52 +0000)
Before: #include "a.h" #include "b.h"
After:  #include "a.h"
        #include "b.h"

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

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

index c8dc7bf55c1c913eb5db05de653fd831ac4bc7f6..742b9a8d1cc7a734aa1635702cb7673db28aec6d 100644 (file)
@@ -1427,7 +1427,8 @@ private:
                                  std::vector<AnnotatedLine>::iterator E,
                                  unsigned Limit) {
     AnnotatedLine &Line = *I;
-    if (!(I + 1)->InPPDirective) return;
+    if (!(I + 1)->InPPDirective || (I + 1)->First.FormatTok.HasUnescapedNewline)
+      return;
     if (I + 2 != E && (I + 2)->InPPDirective &&
         !(I + 2)->First.FormatTok.HasUnescapedNewline)
       return;
index c088089211cec222dc34acfa74fc08546b0ed533..daebc4ddab1a5a5350b6d57a3922f1ab2212711e 100644 (file)
@@ -1133,12 +1133,12 @@ TEST_F(FormatTest, LineStartsWithSpecialCharacter) {
 }
 
 TEST_F(FormatTest, HandlesIncludeDirectives) {
-  verifyFormat("#include <string>");
-  verifyFormat("#include <a/b/c.h>");
-  verifyFormat("#include \"a/b/string\"");
-  verifyFormat("#include \"string.h\"");
-  verifyFormat("#include \"string.h\"");
-  verifyFormat("#include <a-a>");
+  verifyFormat("#include <string>\n"
+               "#include <a/b/c.h>\n"
+               "#include \"a/b/string\"\n"
+               "#include \"string.h\"\n"
+               "#include \"string.h\"\n"
+               "#include <a-a>");
 
   verifyFormat("#import <string>");
   verifyFormat("#import <a/b/c.h>");