summaryrefslogtreecommitdiffstats
path: root/clang/unittests/Format/NamespaceEndCommentsFixerTest.cpp
diff options
context:
space:
mode:
authorKrasimir Georgiev <krasimir@google.com>2017-03-02 09:54:44 +0000
committerKrasimir Georgiev <krasimir@google.com>2017-03-02 09:54:44 +0000
commit9163fe2aba8a146b7d5dc5b8e256a7fb10687245 (patch)
treefdd6f7ad78d4bc967793e64ac9f67b68fe39fcdb /clang/unittests/Format/NamespaceEndCommentsFixerTest.cpp
parentfb0dc6206e4f76c33d8d489351d7d11151a8eed4 (diff)
downloadbcm5719-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.cpp58
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) {
OpenPOWER on IntegriCloud