summaryrefslogtreecommitdiffstats
path: root/clang/unittests/Format
diff options
context:
space:
mode:
Diffstat (limited to 'clang/unittests/Format')
-rw-r--r--clang/unittests/Format/FormatTestProto.cpp11
-rw-r--r--clang/unittests/Format/FormatTestTextProto.cpp61
2 files changed, 72 insertions, 0 deletions
diff --git a/clang/unittests/Format/FormatTestProto.cpp b/clang/unittests/Format/FormatTestProto.cpp
index d667ec2b3e9..27ecde7f340 100644
--- a/clang/unittests/Format/FormatTestProto.cpp
+++ b/clang/unittests/Format/FormatTestProto.cpp
@@ -421,5 +421,16 @@ TEST_F(FormatTestProto, KeepsLongStringLiteralsOnSameLine) {
"}");
}
+TEST_F(FormatTestProto, FormatsOptionsExtensions) {
+ verifyFormat("option (MyProto.options) = {\n"
+ " msg_field: { field_d: 123 }\n"
+ " [ext.t/u] { key: value }\n"
+ " key: value\n"
+ " [t.u/v] <\n"
+ " [ext] { key: value }\n"
+ " >\n"
+ "};");
+}
+
} // end namespace tooling
} // end namespace clang
diff --git a/clang/unittests/Format/FormatTestTextProto.cpp b/clang/unittests/Format/FormatTestTextProto.cpp
index 84faccb2fbb..8786b270ed5 100644
--- a/clang/unittests/Format/FormatTestTextProto.cpp
+++ b/clang/unittests/Format/FormatTestTextProto.cpp
@@ -325,5 +325,66 @@ TEST_F(FormatTestTextProto, KeepsCommentsIndentedInList) {
"cccccccccccccccccccccccc: 3849");
}
+TEST_F(FormatTestTextProto, FormatsExtensions) {
+ verifyFormat("[type] { key: value }");
+ verifyFormat("[type] {\n"
+ " keyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy: value\n"
+ "}");
+ verifyFormat("[type.type] { key: value }");
+ verifyFormat("[type.type] < key: value >");
+ verifyFormat("[type.type/type.type] { key: value }");
+ verifyFormat("msg {\n"
+ " [type.type] { key: value }\n"
+ "}");
+ verifyFormat("msg {\n"
+ " [type.type] {\n"
+ " keyyyyyyyyyyyyyy: valuuuuuuuuuuuuuuuuuuuuuuuuue\n"
+ " }\n"
+ "}");
+ verifyFormat("key: value\n"
+ "[a.b] { key: value }");
+ verifyFormat("msg: <\n"
+ " key: value\n"
+ " [a.b.c/d.e]: < key: value >\n"
+ " [f.g]: <\n"
+ " key: valueeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee\n"
+ " key: {}\n"
+ " >\n"
+ " key {}\n"
+ " [h.i.j] < key: value >\n"
+ " [a]: {\n"
+ " [b.c]: {}\n"
+ " [d] <>\n"
+ " [e/f]: 1\n"
+ " }\n"
+ ">");
+ verifyFormat("[longg.long.long.long.long.long.long.long.long.long.long\n"
+ " .longg.longlong] { key: value }");
+ verifyFormat("[longg.long.long.long.long.long.long.long.long.long.long\n"
+ " .longg.longlong] {\n"
+ " key: value\n"
+ " key: value\n"
+ " key: value\n"
+ " key: value\n"
+ "}");
+ verifyFormat("[longg.long.long.long.long.long.long.long.long.long\n"
+ " .long/longg.longlong] { key: value }");
+ verifyFormat("[aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/\n"
+ " bbbbbbbbbbbbbb] { key: value }");
+ verifyFormat("[aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n"
+ "] { key: value }");
+ verifyFormat("[aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n"
+ "] {\n"
+ " [type.type] {\n"
+ " keyyyyyyyyyyyyyy: valuuuuuuuuuuuuuuuuuuuuuuuuue\n"
+ " }\n"
+ "}");
+ verifyFormat("[aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/\n"
+ " bbbbbbb] {\n"
+ " [type.type] {\n"
+ " keyyyyyyyyyyyyyy: valuuuuuuuuuuuuuuuuuuuuuuuuue\n"
+ " }\n"
+ "}");
+}
} // end namespace tooling
} // end namespace clang
OpenPOWER on IntegriCloud