From cbdde495ba28915d52b561e44aaba12db4cf724f Mon Sep 17 00:00:00 2001 From: =?utf8?q?Bj=C3=B6rn=20Sch=C3=A4pers?= Date: Mon, 18 Jan 2021 13:15:20 +0100 Subject: [PATCH] [clang-format] Apply Allman style to lambdas Differential Revision: https://reviews.llvm.org/D94906 --- clang/lib/Format/Format.cpp | 1 + clang/unittests/Format/FormatTest.cpp | 52 +++++++++++++++++++++++++++++++++++ 2 files changed, 53 insertions(+) diff --git a/clang/lib/Format/Format.cpp b/clang/lib/Format/Format.cpp index 9f00781..110e1a7 100644 --- a/clang/lib/Format/Format.cpp +++ b/clang/lib/Format/Format.cpp @@ -801,6 +801,7 @@ static FormatStyle expandPresets(const FormatStyle &Style) { Expanded.IndentExternBlock = FormatStyle::IEBS_AfterExternBlock; Expanded.BraceWrapping.BeforeCatch = true; Expanded.BraceWrapping.BeforeElse = true; + Expanded.BraceWrapping.BeforeLambdaBody = true; break; case FormatStyle::BS_Whitesmiths: Expanded.BraceWrapping.AfterCaseLabel = true; diff --git a/clang/unittests/Format/FormatTest.cpp b/clang/unittests/Format/FormatTest.cpp index ae8bfc6..15650168 100644 --- a/clang/unittests/Format/FormatTest.cpp +++ b/clang/unittests/Format/FormatTest.cpp @@ -13481,6 +13481,58 @@ TEST_F(FormatTest, AllmanBraceBreaking) { "#endif", AllmanBraceStyle); + EXPECT_EQ(AllmanBraceStyle.AllowShortLambdasOnASingleLine, + FormatStyle::SLS_All); + + verifyFormat("[](int i) { return i + 2; };\n" + "[](int i, int j)\n" + "{\n" + " auto x = i + j;\n" + " auto y = i * j;\n" + " return x ^ y;\n" + "};\n" + "void foo()\n" + "{\n" + " auto shortLambda = [](int i) { return i + 2; };\n" + " auto longLambda = [](int i, int j)\n" + " {\n" + " auto x = i + j;\n" + " auto y = i * j;\n" + " return x ^ y;\n" + " };\n" + "}", + AllmanBraceStyle); + + AllmanBraceStyle.AllowShortLambdasOnASingleLine = FormatStyle::SLS_None; + + verifyFormat("[](int i)\n" + "{\n" + " return i + 2;\n" + "};\n" + "[](int i, int j)\n" + "{\n" + " auto x = i + j;\n" + " auto y = i * j;\n" + " return x ^ y;\n" + "};\n" + "void foo()\n" + "{\n" + " auto shortLambda = [](int i)\n" + " {\n" + " return i + 2;\n" + " };\n" + " auto longLambda = [](int i, int j)\n" + " {\n" + " auto x = i + j;\n" + " auto y = i * j;\n" + " return x ^ y;\n" + " };\n" + "}", + AllmanBraceStyle); + + // Reset + AllmanBraceStyle.AllowShortLambdasOnASingleLine = FormatStyle::SLS_All; + // This shouldn't affect ObjC blocks.. verifyFormat("[self doSomeThingWithACompletionHandler:^{\n" " // ...\n" -- 2.7.4