]> granicus.if.org Git - clang/commitdiff
clang-format: Better support functions with elaborated enum return types.
authorDaniel Jasper <djasper@google.com>
Thu, 18 Jun 2015 15:45:17 +0000 (15:45 +0000)
committerDaniel Jasper <djasper@google.com>
Thu, 18 Jun 2015 15:45:17 +0000 (15:45 +0000)
Before, this wasn't formatted properly:
  enum ::C f() {
    return a;
  }

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@240021 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Format/UnwrappedLineParser.cpp
unittests/Format/FormatTest.cpp

index aa46e7464cd084c4c7aff3e8e15ef91dd1adb20e..6846158fb3a554e60fb8934e0c184242b4f8cb9d 100644 (file)
@@ -1491,6 +1491,8 @@ void UnwrappedLineParser::parseEnum() {
   while (FormatTok->Tok.getIdentifierInfo() ||
          FormatTok->isOneOf(tok::colon, tok::coloncolon, tok::less,
                             tok::greater, tok::comma, tok::question)) {
+    if (FormatTok->is(tok::coloncolon))
+      nextToken();
     nextToken();
     // We can have macros or attributes in between 'enum' and the enum name.
     if (FormatTok->is(tok::l_paren))
index ea5ff189da35706cf25033d24b82865a077ccf45..122a1a6c5f1eac8939461274424ade19b9cd1d66 100644 (file)
@@ -1996,7 +1996,6 @@ TEST_F(FormatTest, FormatsEnum) {
   verifyFormat("enum X E {} d;");
   verifyFormat("enum __attribute__((...)) E {} d;");
   verifyFormat("enum __declspec__((...)) E {} d;");
-  verifyFormat("enum X f() {\n  a();\n  return 42;\n}");
   verifyFormat("enum {\n"
                "  Bar = Foo<int, int>::value\n"
                "};",
@@ -2025,6 +2024,19 @@ TEST_F(FormatTest, FormatsEnum) {
                "  TWO\n"
                "};\n"
                "int i;");
+  // Not enums.
+  verifyFormat("enum X f() {\n"
+               "  a();\n"
+               "  return 42;\n"
+               "}");
+  verifyFormat("enum ::X f() {\n"
+               "  a();\n"
+               "  return 42;\n"
+               "}");
+  verifyFormat("enum ns::X f() {\n"
+               "  a();\n"
+               "  return 42;\n"
+               "}");
 }
 
 TEST_F(FormatTest, FormatsEnumsWithErrors) {