]> granicus.if.org Git - clang/commitdiff
clang-format: Prefer formatting local lambdas like functions.
authorDaniel Jasper <djasper@google.com>
Wed, 13 May 2015 08:47:16 +0000 (08:47 +0000)
committerDaniel Jasper <djasper@google.com>
Wed, 13 May 2015 08:47:16 +0000 (08:47 +0000)
Before:
  auto my_lambda =
      [](const string &some_parameter) { return some_parameter.size(); };

After:
  auto my_lambda = [](const string &some_parameter) {
    return some_parameter.size();
  };

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

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

index 6cf3f1d5230eede7c9f0f39d9b018fdd607249d0..777de9bf1e3c3bc4de4f713106faf6c169f61dd4 100644 (file)
@@ -1593,6 +1593,9 @@ unsigned TokenAnnotator::splitPenalty(const AnnotatedLine &Line,
   if (Right.is(tok::l_square)) {
     if (Style.Language == FormatStyle::LK_Proto)
       return 1;
+    // Slightly prefer formatting local lambda definitions like functions.
+    if (Right.is(TT_LambdaLSquare) && Left.is(tok::equal))
+      return 50;
     if (!Right.isOneOf(TT_ObjCMethodExpr, TT_LambdaLSquare))
       return 500;
   }
index 371fa0f3d22d622d9e0870e430e3fb59829d05a5..ecd78b24d0944d0518840c505ad884fd4266c869 100644 (file)
@@ -9967,6 +9967,9 @@ TEST_F(FormatTest, FormatsLambdas) {
                "    : Field([] { // comment\n"
                "        int i;\n"
                "      }) {}");
+  verifyFormat("auto my_lambda = [](const string &some_parameter) {\n"
+               "  return some_parameter.size();\n"
+               "};");
 
   // Lambdas with return types.
   verifyFormat("int c = []() -> int { return 2; }();\n");