darwin created this revision.
darwin added a project: clang-format.
darwin requested review of this revision.
Herald added a project: clang.
Herald added a subscriber: cfe-commits.

This a bug fix of https://bugs.llvm.org/show_bug.cgi?id=50116

First revision only contains the change of the test code. I would like to have 
someone review the expected result. If it is OK. Then I can fix it.

Here is the output of the test case without fixing yet:

  darwin@Darwins-iMac build % 
/Volumes/silo/Projects/open-source/llvm-project/build/tools/clang/unittests/Format/./FormatTests
 --gtest_filter=FormatTest.RemovesEmptyLines
  Note: Google Test filter = FormatTest.RemovesEmptyLines
  [==========] Running 1 test from 1 test suite.
  [----------] Global test environment set-up.
  [----------] 1 test from FormatTest
  [ RUN      ] FormatTest.RemovesEmptyLines
  
/Volumes/silo/Projects/open-source/llvm-project/clang/unittests/Format/FormatTest.cpp:279:
 Failure
  Expected equality of these values:
    "namespace N\n" "{\n" "\n" "int i;\n" "}"
      Which is: "namespace N\n{\n\nint i;\n}"
    format("namespace N\n" "{\n" "\n" "\n" "int    i;\n" "}", 
GoogleWrapBraceAfterNamespace)
      Which is: "namespace N\n{\nint i;\n}"
  With diff:
  @@ -1,5 @@
   namespace N
   {
  -
   int i;
   }
  
  
/Volumes/silo/Projects/open-source/llvm-project/clang/unittests/Format/FormatTest.cpp:290:
 Failure
  Expected equality of these values:
    "/* something */ namespace N\n" "{\n" "\n" "int i;\n" "}"
      Which is: "/* something */ namespace N\n{\n\nint i;\n}"
    format("/* something */ namespace N {\n" "\n" "\n" "int    i;\n" "}", 
GoogleWrapBraceAfterNamespace)
      Which is: "/* something */ namespace N\n{\nint i;\n}"
  With diff:
  @@ -1,5 @@
   /* something */ namespace N
   {
  -
   int i;
   }
  
  
/Volumes/silo/Projects/open-source/llvm-project/clang/unittests/Format/FormatTest.cpp:302:
 Failure
  Expected equality of these values:
    "inline namespace N\n" "{\n" "\n" "int i;\n" "}"
      Which is: "inline namespace N\n{\n\nint i;\n}"
    format("inline namespace N\n" "{\n" "\n" "\n" "int    i;\n" "}", 
GoogleWrapBraceAfterNamespace)
      Which is: "inline namespace N\n{\nint i;\n}"
  With diff:
  @@ -1,5 @@
   inline namespace N
   {
  -
   int i;
   }
  
  
/Volumes/silo/Projects/open-source/llvm-project/clang/unittests/Format/FormatTest.cpp:313:
 Failure
  Expected equality of these values:
    "/* something */ inline namespace N\n" "{\n" "\n" "int i;\n" "}"
      Which is: "/* something */ inline namespace N\n{\n\nint i;\n}"
    format("/* something */ inline namespace N\n" "{\n" "\n" "int    i;\n" "}", 
GoogleWrapBraceAfterNamespace)
      Which is: "/* something */ inline namespace N\n{\nint i;\n}"
  With diff:
  @@ -1,5 @@
   /* something */ inline namespace N
   {
  -
   int i;
   }
  
  
/Volumes/silo/Projects/open-source/llvm-project/clang/unittests/Format/FormatTest.cpp:324:
 Failure
  Expected equality of these values:
    "export namespace N\n" "{\n" "\n" "int i;\n" "}"
      Which is: "export namespace N\n{\n\nint i;\n}"
    format("export namespace N\n" "{\n" "\n" "int    i;\n" "}", 
GoogleWrapBraceAfterNamespace)
      Which is: "export namespace N\n{\nint i;\n}"
  With diff:
  @@ -1,5 @@
   export namespace N
   {
  -
   int i;
   }
  
  
/Volumes/silo/Projects/open-source/llvm-project/clang/unittests/Format/FormatTest.cpp:345:
 Failure
  Expected equality of these values:
    "namespace a\n" "{\n" "namespace b\n" "{\n" "\n" "class AA {};\n" "\n" "}  
// namespace b\n" "}  // namespace a\n"
      Which is: "namespace a\n{\nnamespace b\n{\n\nclass AA {};\n\n}  // 
namespace b\n}  // namespace a\n"
    format("namespace a\n" "{\n" "namespace b\n" "{\n" "\n" "\n" "class AA 
{};\n" "\n" "\n" "}\n" "}\n", GoogleWrapBraceAfterNamespace)
      Which is: "namespace a\n{\nnamespace b\n{\nclass AA {};\n\n}  // 
namespace b\n}  // namespace a\n"
  With diff:
  @@ -3,5 @@
   namespace b
   {
  -
   class AA {};
   
  
  [  FAILED  ] FormatTest.RemovesEmptyLines (41 ms)
  [----------] 1 test from FormatTest (41 ms total)
  
  [----------] Global test environment tear-down
  [==========] 1 test from 1 test suite ran. (41 ms total)
  [  PASSED  ] 0 tests.
  [  FAILED  ] 1 test, listed below:
  [  FAILED  ] FormatTest.RemovesEmptyLines
  
   1 FAILED TEST
  darwin@Darwins-iMac build % 


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D104044

Files:
  clang/unittests/Format/FormatTest.cpp


Index: clang/unittests/Format/FormatTest.cpp
===================================================================
--- clang/unittests/Format/FormatTest.cpp
+++ clang/unittests/Format/FormatTest.cpp
@@ -262,6 +262,88 @@
                    "}",
                    getGoogleStyle()));
 
+  auto GoogleWrapBraceAfterNamespace = getGoogleStyle();
+  GoogleWrapBraceAfterNamespace.BreakBeforeBraces = FormatStyle::BS_Custom;
+  GoogleWrapBraceAfterNamespace.BraceWrapping.AfterNamespace = true;
+  EXPECT_EQ("namespace N\n"
+            "{\n"
+            "\n"
+            "int i;\n"
+            "}",
+            format("namespace N\n"
+                   "{\n"
+                   "\n"
+                   "\n"
+                   "int    i;\n"
+                   "}",
+                   GoogleWrapBraceAfterNamespace));
+  EXPECT_EQ("/* something */ namespace N\n"
+            "{\n"
+            "\n"
+            "int i;\n"
+            "}",
+            format("/* something */ namespace N {\n"
+                   "\n"
+                   "\n"
+                   "int    i;\n"
+                   "}",
+                   GoogleWrapBraceAfterNamespace));
+  EXPECT_EQ("inline namespace N\n"
+            "{\n"
+            "\n"
+            "int i;\n"
+            "}",
+            format("inline namespace N\n"
+                   "{\n"
+                   "\n"
+                   "\n"
+                   "int    i;\n"
+                   "}",
+                   GoogleWrapBraceAfterNamespace));
+  EXPECT_EQ("/* something */ inline namespace N\n"
+            "{\n"
+            "\n"
+            "int i;\n"
+            "}",
+            format("/* something */ inline namespace N\n"
+                   "{\n"
+                   "\n"
+                   "int    i;\n"
+                   "}",
+                   GoogleWrapBraceAfterNamespace));
+  EXPECT_EQ("export namespace N\n"
+            "{\n"
+            "\n"
+            "int i;\n"
+            "}",
+            format("export namespace N\n"
+                   "{\n"
+                   "\n"
+                   "int    i;\n"
+                   "}",
+                   GoogleWrapBraceAfterNamespace));
+  EXPECT_EQ("namespace a\n"
+            "{\n"
+            "namespace b\n"
+            "{\n"
+            "\n"
+            "class AA {};\n"
+            "\n"
+            "}  // namespace b\n"
+            "}  // namespace a\n",
+            format("namespace a\n"
+                   "{\n"
+                   "namespace b\n"
+                   "{\n"
+                   "\n"
+                   "\n"
+                   "class AA {};\n"
+                   "\n"
+                   "\n"
+                   "}\n"
+                   "}\n",
+                   GoogleWrapBraceAfterNamespace));
+
   // ...but do keep inlining and removing empty lines for non-block extern "C"
   // functions.
   verifyFormat("extern \"C\" int f() { return 42; }", getGoogleStyle());


Index: clang/unittests/Format/FormatTest.cpp
===================================================================
--- clang/unittests/Format/FormatTest.cpp
+++ clang/unittests/Format/FormatTest.cpp
@@ -262,6 +262,88 @@
                    "}",
                    getGoogleStyle()));
 
+  auto GoogleWrapBraceAfterNamespace = getGoogleStyle();
+  GoogleWrapBraceAfterNamespace.BreakBeforeBraces = FormatStyle::BS_Custom;
+  GoogleWrapBraceAfterNamespace.BraceWrapping.AfterNamespace = true;
+  EXPECT_EQ("namespace N\n"
+            "{\n"
+            "\n"
+            "int i;\n"
+            "}",
+            format("namespace N\n"
+                   "{\n"
+                   "\n"
+                   "\n"
+                   "int    i;\n"
+                   "}",
+                   GoogleWrapBraceAfterNamespace));
+  EXPECT_EQ("/* something */ namespace N\n"
+            "{\n"
+            "\n"
+            "int i;\n"
+            "}",
+            format("/* something */ namespace N {\n"
+                   "\n"
+                   "\n"
+                   "int    i;\n"
+                   "}",
+                   GoogleWrapBraceAfterNamespace));
+  EXPECT_EQ("inline namespace N\n"
+            "{\n"
+            "\n"
+            "int i;\n"
+            "}",
+            format("inline namespace N\n"
+                   "{\n"
+                   "\n"
+                   "\n"
+                   "int    i;\n"
+                   "}",
+                   GoogleWrapBraceAfterNamespace));
+  EXPECT_EQ("/* something */ inline namespace N\n"
+            "{\n"
+            "\n"
+            "int i;\n"
+            "}",
+            format("/* something */ inline namespace N\n"
+                   "{\n"
+                   "\n"
+                   "int    i;\n"
+                   "}",
+                   GoogleWrapBraceAfterNamespace));
+  EXPECT_EQ("export namespace N\n"
+            "{\n"
+            "\n"
+            "int i;\n"
+            "}",
+            format("export namespace N\n"
+                   "{\n"
+                   "\n"
+                   "int    i;\n"
+                   "}",
+                   GoogleWrapBraceAfterNamespace));
+  EXPECT_EQ("namespace a\n"
+            "{\n"
+            "namespace b\n"
+            "{\n"
+            "\n"
+            "class AA {};\n"
+            "\n"
+            "}  // namespace b\n"
+            "}  // namespace a\n",
+            format("namespace a\n"
+                   "{\n"
+                   "namespace b\n"
+                   "{\n"
+                   "\n"
+                   "\n"
+                   "class AA {};\n"
+                   "\n"
+                   "\n"
+                   "}\n"
+                   "}\n",
+                   GoogleWrapBraceAfterNamespace));
+
   // ...but do keep inlining and removing empty lines for non-block extern "C"
   // functions.
   verifyFormat("extern \"C\" int f() { return 42; }", getGoogleStyle());
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to