summaryrefslogtreecommitdiffstats
path: root/clang/unittests/Format/UsingDeclarationsSorterTest.cpp
diff options
context:
space:
mode:
authorKrasimir Georgiev <krasimir@google.com>2017-11-09 15:41:23 +0000
committerKrasimir Georgiev <krasimir@google.com>2017-11-09 15:41:23 +0000
commit818da9bb299cad1a75e5e31dbd96dabb22f54cb8 (patch)
tree1a7c9a1c5b4372a8532403a04a50f554432d27ab /clang/unittests/Format/UsingDeclarationsSorterTest.cpp
parent1696bb65233cdbef0a1138175cd540fc1b86e540 (diff)
downloadbcm5719-llvm-818da9bb299cad1a75e5e31dbd96dabb22f54cb8.tar.gz
bcm5719-llvm-818da9bb299cad1a75e5e31dbd96dabb22f54cb8.zip
[clang-format] Sort using declarations by splitting on '::'
Summary: This patch improves using declarations sorting. Reviewers: bkramer Reviewed By: bkramer Subscribers: cfe-commits, klimek Differential Revision: https://reviews.llvm.org/D39786 llvm-svn: 317794
Diffstat (limited to 'clang/unittests/Format/UsingDeclarationsSorterTest.cpp')
-rw-r--r--clang/unittests/Format/UsingDeclarationsSorterTest.cpp71
1 files changed, 61 insertions, 10 deletions
diff --git a/clang/unittests/Format/UsingDeclarationsSorterTest.cpp b/clang/unittests/Format/UsingDeclarationsSorterTest.cpp
index 6ce96ed9620..e72076a8e31 100644
--- a/clang/unittests/Format/UsingDeclarationsSorterTest.cpp
+++ b/clang/unittests/Format/UsingDeclarationsSorterTest.cpp
@@ -50,8 +50,8 @@ TEST_F(UsingDeclarationsSorterTest, SwapsTwoConsecutiveUsingDeclarations) {
"using aa;",
sortUsingDeclarations("using aa;\n"
"using a;"));
- EXPECT_EQ("using ::a;\n"
- "using a;",
+ EXPECT_EQ("using a;\n"
+ "using ::a;",
sortUsingDeclarations("using a;\n"
"using ::a;"));
@@ -86,21 +86,32 @@ TEST_F(UsingDeclarationsSorterTest, SwapsTwoConsecutiveUsingDeclarations) {
"using a, b;"));
}
-TEST_F(UsingDeclarationsSorterTest, SortsCaseSensitively) {
+TEST_F(UsingDeclarationsSorterTest, UsingDeclarationOrder) {
EXPECT_EQ("using A;\n"
"using a;",
sortUsingDeclarations("using A;\n"
"using a;"));
- EXPECT_EQ("using A;\n"
- "using a;",
+ EXPECT_EQ("using a;\n"
+ "using A;",
sortUsingDeclarations("using a;\n"
"using A;"));
- EXPECT_EQ("using B;\n"
- "using a;",
+ EXPECT_EQ("using a;\n"
+ "using B;",
sortUsingDeclarations("using B;\n"
"using a;"));
- // Sorts '_' right before 'A'.
+ // Ignores leading '::'.
+ EXPECT_EQ("using ::a;\n"
+ "using A;",
+ sortUsingDeclarations("using ::a;\n"
+ "using A;"));
+
+ EXPECT_EQ("using ::A;\n"
+ "using a;",
+ sortUsingDeclarations("using ::A;\n"
+ "using a;"));
+
+ // Sorts '_' before 'a' and 'A'.
EXPECT_EQ("using _;\n"
"using A;",
sortUsingDeclarations("using A;\n"
@@ -114,18 +125,58 @@ TEST_F(UsingDeclarationsSorterTest, SortsCaseSensitively) {
sortUsingDeclarations("using a::a;\n"
"using a::_;"));
+ // Sorts non-namespace names before namespace names at the same level.
EXPECT_EQ("using ::testing::_;\n"
"using ::testing::Aardvark;\n"
+ "using ::testing::kMax;\n"
"using ::testing::Xylophone;\n"
"using ::testing::apple::Honeycrisp;\n"
"using ::testing::zebra::Stripes;",
sortUsingDeclarations("using ::testing::Aardvark;\n"
"using ::testing::Xylophone;\n"
+ "using ::testing::kMax;\n"
"using ::testing::_;\n"
"using ::testing::apple::Honeycrisp;\n"
"using ::testing::zebra::Stripes;"));
}
+TEST_F(UsingDeclarationsSorterTest, SortsStably) {
+ EXPECT_EQ("using a;\n"
+ "using a;\n"
+ "using A;\n"
+ "using a;\n"
+ "using A;\n"
+ "using a;\n"
+ "using A;\n"
+ "using a;\n"
+ "using B;\n"
+ "using b;\n"
+ "using b;\n"
+ "using B;\n"
+ "using b;\n"
+ "using b;\n"
+ "using b;\n"
+ "using B;\n"
+ "using b;",
+ sortUsingDeclarations("using a;\n"
+ "using B;\n"
+ "using a;\n"
+ "using b;\n"
+ "using A;\n"
+ "using a;\n"
+ "using b;\n"
+ "using B;\n"
+ "using b;\n"
+ "using A;\n"
+ "using a;\n"
+ "using b;\n"
+ "using b;\n"
+ "using B;\n"
+ "using b;\n"
+ "using A;\n"
+ "using a;"));
+}
+
TEST_F(UsingDeclarationsSorterTest, SortsMultipleTopLevelDeclarations) {
EXPECT_EQ("using a;\n"
"using b;\n"
@@ -139,14 +190,14 @@ TEST_F(UsingDeclarationsSorterTest, SortsMultipleTopLevelDeclarations) {
"using c;"));
EXPECT_EQ("#include <iostream>\n"
- "using ::std::endl;\n"
"using std::cin;\n"
"using std::cout;\n"
+ "using ::std::endl;\n"
"int main();",
sortUsingDeclarations("#include <iostream>\n"
"using std::cout;\n"
- "using std::cin;\n"
"using ::std::endl;\n"
+ "using std::cin;\n"
"int main();"));
}
OpenPOWER on IntegriCloud