diff options
author | Krasimir Georgiev <krasimir@google.com> | 2017-03-02 09:54:44 +0000 |
---|---|---|
committer | Krasimir Georgiev <krasimir@google.com> | 2017-03-02 09:54:44 +0000 |
commit | 9163fe2aba8a146b7d5dc5b8e256a7fb10687245 (patch) | |
tree | fdd6f7ad78d4bc967793e64ac9f67b68fe39fcdb /clang/unittests/Format/NamespaceEndCommentsFixerTest.cpp | |
parent | fb0dc6206e4f76c33d8d489351d7d11151a8eed4 (diff) | |
download | bcm5719-llvm-9163fe2aba8a146b7d5dc5b8e256a7fb10687245.tar.gz bcm5719-llvm-9163fe2aba8a146b7d5dc5b8e256a7fb10687245.zip |
[clang-format] Use number of unwrapped lines for short namespace
Summary:
This patch makes the namespace comment fixer use the number of unwrapped lines
that a namespace spans to detect it that namespace is short, thus not needing
end comments to be added.
This is needed to ensure clang-format is idempotent. Previously, a short namespace
was detected by the original source code lines. This has the effect of requiring two
runs for this example:
```
namespace { class A; }
```
after first run:
```
namespace {
class A;
}
```
after second run:
```
namespace {
class A;
} // namespace
```
Reviewers: djasper
Reviewed By: djasper
Subscribers: cfe-commits, klimek
Differential Revision: https://reviews.llvm.org/D30528
llvm-svn: 296736
Diffstat (limited to 'clang/unittests/Format/NamespaceEndCommentsFixerTest.cpp')
-rw-r--r-- | clang/unittests/Format/NamespaceEndCommentsFixerTest.cpp | 58 |
1 files changed, 51 insertions, 7 deletions
diff --git a/clang/unittests/Format/NamespaceEndCommentsFixerTest.cpp b/clang/unittests/Format/NamespaceEndCommentsFixerTest.cpp index c24894e7d4e..28212f8524d 100644 --- a/clang/unittests/Format/NamespaceEndCommentsFixerTest.cpp +++ b/clang/unittests/Format/NamespaceEndCommentsFixerTest.cpp @@ -47,87 +47,123 @@ protected: TEST_F(NamespaceEndCommentsFixerTest, AddsEndComment) { EXPECT_EQ("namespace {\n" " int i;\n" + " int j;\n" "}// namespace", fixNamespaceEndComments("namespace {\n" " int i;\n" + " int j;\n" "}")); EXPECT_EQ("namespace {\n" " int i;\n" + " int j;\n" "}// namespace\n", fixNamespaceEndComments("namespace {\n" " int i;\n" + " int j;\n" "}\n")); EXPECT_EQ("namespace A {\n" " int i;\n" + " int j;\n" "}// namespace A", fixNamespaceEndComments("namespace A {\n" " int i;\n" + " int j;\n" "}")); EXPECT_EQ("inline namespace A {\n" " int i;\n" + " int j;\n" "}// namespace A", fixNamespaceEndComments("inline namespace A {\n" " int i;\n" + " int j;\n" "}")); EXPECT_EQ("namespace ::A {\n" " int i;\n" + " int j;\n" "}// namespace ::A", fixNamespaceEndComments("namespace ::A {\n" " int i;\n" + " int j;\n" "}")); EXPECT_EQ("namespace ::A::B {\n" " int i;\n" + " int j;\n" "}// namespace ::A::B", fixNamespaceEndComments("namespace ::A::B {\n" " int i;\n" + " int j;\n" "}")); EXPECT_EQ("namespace /**/::/**/A/**/::/**/B/**/ {\n" " int i;\n" + " int j;\n" "}// namespace ::A::B", fixNamespaceEndComments("namespace /**/::/**/A/**/::/**/B/**/ {\n" " int i;\n" + " int j;\n" "}")); EXPECT_EQ("namespace A {\n" "namespace B {\n" " int i;\n" + "}\n" + "}// namespace A", + fixNamespaceEndComments("namespace A {\n" + "namespace B {\n" + " int i;\n" + "}\n" + "}")); + EXPECT_EQ("namespace A {\n" + "namespace B {\n" + " int i;\n" + " int j;\n" "}// namespace B\n" "}// namespace A", fixNamespaceEndComments("namespace A {\n" "namespace B {\n" " int i;\n" + " int j;\n" "}\n" "}")); EXPECT_EQ("namespace A {\n" " int a;\n" + " int b;\n" "}// namespace A\n" "namespace B {\n" " int b;\n" + " int a;\n" "}// namespace B", fixNamespaceEndComments("namespace A {\n" " int a;\n" + " int b;\n" "}\n" "namespace B {\n" " int b;\n" + " int a;\n" "}")); EXPECT_EQ("namespace A {\n" " int a1;\n" + " int a2;\n" "}// namespace A\n" "namespace A {\n" " int a2;\n" + " int a1;\n" "}// namespace A", fixNamespaceEndComments("namespace A {\n" " int a1;\n" + " int a2;\n" "}\n" "namespace A {\n" " int a2;\n" + " int a1;\n" "}")); EXPECT_EQ("namespace A {\n" " int a;\n" + " int b;\n" "}// namespace A\n" "// comment about b\n" "int b;", fixNamespaceEndComments("namespace A {\n" " int a;\n" + " int b;\n" "}\n" "// comment about b\n" "int b;")); @@ -136,7 +172,7 @@ TEST_F(NamespaceEndCommentsFixerTest, AddsEndComment) { "namespace B {\n" "namespace C {\n" "namespace D {\n" - "}// namespace D\n" + "}\n" "}// namespace C\n" "}// namespace B\n" "}// namespace A", @@ -153,36 +189,44 @@ TEST_F(NamespaceEndCommentsFixerTest, AddsEndComment) { TEST_F(NamespaceEndCommentsFixerTest, AddsNewlineIfNeeded) { EXPECT_EQ("namespace A {\n" " int i;\n" + " int j;\n" "}// namespace A\n" - " int j;", + " int k;", fixNamespaceEndComments("namespace A {\n" " int i;\n" - "} int j;")); + " int j;\n" + "} int k;")); EXPECT_EQ("namespace {\n" " int i;\n" + " int j;\n" "}// namespace\n" - " int j;", + " int k;", fixNamespaceEndComments("namespace {\n" " int i;\n" - "} int j;")); + " int j;\n" + "} int k;")); EXPECT_EQ("namespace A {\n" " int i;\n" + " int j;\n" "}// namespace A\n" " namespace B {\n" " int j;\n" + " int k;\n" "}// namespace B", fixNamespaceEndComments("namespace A {\n" " int i;\n" + " int j;\n" "} namespace B {\n" " int j;\n" + " int k;\n" "}")); } TEST_F(NamespaceEndCommentsFixerTest, DoesNotAddEndCommentForShortNamespace) { EXPECT_EQ("namespace {}", fixNamespaceEndComments("namespace {}")); EXPECT_EQ("namespace A {}", fixNamespaceEndComments("namespace A {}")); - EXPECT_EQ("namespace A { int i; }", - fixNamespaceEndComments("namespace A { int i; }")); + EXPECT_EQ("namespace A { a }", + fixNamespaceEndComments("namespace A { a }")); } TEST_F(NamespaceEndCommentsFixerTest, DoesNotAddCommentAfterUnaffectedRBrace) { |