clang-format: Add spaces around trailing/lambda return types.
authorDaniel Jasper <djasper@google.com>
Mon, 10 Mar 2014 10:02:02 +0000 (10:02 +0000)
committerDaniel Jasper <djasper@google.com>
Mon, 10 Mar 2014 10:02:02 +0000 (10:02 +0000)
Before:
  int c = []()->int { return 2; }();

After:
  int c = []() -> int { return 2; }();

llvm-svn: 203452

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

index b7eb3bf..7efeaff 100644 (file)
@@ -583,7 +583,8 @@ private:
       // recovered from an error (e.g. failure to find the matching >).
       if (CurrentToken->Type != TT_LambdaLSquare &&
           CurrentToken->Type != TT_FunctionLBrace &&
-          CurrentToken->Type != TT_ImplicitStringLiteral)
+          CurrentToken->Type != TT_ImplicitStringLiteral &&
+          CurrentToken->Type != TT_TrailingReturnArrow)
         CurrentToken->Type = TT_Unknown;
       if (CurrentToken->Role)
         CurrentToken->Role.reset(NULL);
index b7de63f..6930bd2 100644 (file)
@@ -784,7 +784,10 @@ bool UnwrappedLineParser::tryToParseLambda() {
     case tok::identifier:
     case tok::coloncolon:
     case tok::kw_mutable:
+      nextToken();
+      break;
     case tok::arrow:
+      FormatTok->Type = TT_TrailingReturnArrow;
       nextToken();
       break;
     default:
index 341fb35..6690103 100644 (file)
@@ -7956,9 +7956,9 @@ TEST_F(FormatTest, FormatsLambdas) {
                "}\n");
 
   // Lambdas with return types.
-  verifyFormat("int c = []()->int { return 2; }();\n");
-  verifyFormat("int c = []()->vector<int> { return {2}; }();\n");
-  verifyFormat("Foo([]()->std::vector<int> { return {2}; }());");
+  verifyFormat("int c = []() -> int { return 2; }();\n");
+  verifyFormat("int c = []() -> vector<int> { return {2}; }();\n");
+  verifyFormat("Foo([]() -> std::vector<int> { return {2}; }());");
 
   // Not lambdas.
   verifyFormat("constexpr char hello[]{\"hello\"};");