[clang] [Format] Configure ASSIGN_OR_RETURN macros for Google style (PR #169037)
Ilya Biryukov via cfe-commits
cfe-commits at lists.llvm.org
Fri Nov 21 05:41:08 PST 2025
https://github.com/ilya-biryukov created https://github.com/llvm/llvm-project/pull/169037
Change is originally authored by Daniel Jasper, who asked me to send this PR upstream.
>From 4517952f9b8f403c1e9bf1c99e3c7d0e2edcb9f1 Mon Sep 17 00:00:00 2001
From: Ilya Biryukov <ibiryukov at google.com>
Date: Fri, 21 Nov 2025 14:15:05 +0100
Subject: [PATCH] [Format] Configure ASSIGN_OR_RETURN macros for Google style
Change is originally authored by Daniel Jasper, who asked me to send
this PR upstream.
---
clang/lib/Format/Format.cpp | 4 ++++
clang/unittests/Format/ConfigParseTest.cpp | 1 +
clang/unittests/Format/FormatTestMacroExpansion.cpp | 8 ++++++++
3 files changed, 13 insertions(+)
diff --git a/clang/lib/Format/Format.cpp b/clang/lib/Format/Format.cpp
index 9bbb33cb14502..20ea81cf429cc 100644
--- a/clang/lib/Format/Format.cpp
+++ b/clang/lib/Format/Format.cpp
@@ -1961,6 +1961,10 @@ FormatStyle getGoogleStyle(FormatStyle::LanguageKind Language) {
GoogleStyle.PenaltyBreakBeforeFirstCallParameter = 1;
GoogleStyle.PenaltyReturnTypeOnItsOwnLine = 200;
+ GoogleStyle.Macros.push_back("ASSIGN_OR_RETURN(a, b)=a = (b)");
+ GoogleStyle.Macros.push_back(
+ "ASSIGN_OR_RETURN(a, b, c)=a = (b); if (x) return c");
+
if (Language == FormatStyle::LK_Java) {
GoogleStyle.AlignAfterOpenBracket = false;
GoogleStyle.AlignOperands = FormatStyle::OAS_DontAlign;
diff --git a/clang/unittests/Format/ConfigParseTest.cpp b/clang/unittests/Format/ConfigParseTest.cpp
index d578fa7a1a1e8..1e1621d8422e9 100644
--- a/clang/unittests/Format/ConfigParseTest.cpp
+++ b/clang/unittests/Format/ConfigParseTest.cpp
@@ -967,6 +967,7 @@ TEST(ConfigParseTest, ParsesConfiguration) {
std::vector<std::string>({"QUNUSED", "QT_REQUIRE_VERSION"}));
CHECK_PARSE_LIST(JavaImportGroups);
+ Style.Macros.clear();
CHECK_PARSE_LIST(Macros);
CHECK_PARSE_LIST(MacrosSkippedByRemoveParentheses);
CHECK_PARSE_LIST(NamespaceMacros);
diff --git a/clang/unittests/Format/FormatTestMacroExpansion.cpp b/clang/unittests/Format/FormatTestMacroExpansion.cpp
index d391fe3d715c3..0b15f21be0ddf 100644
--- a/clang/unittests/Format/FormatTestMacroExpansion.cpp
+++ b/clang/unittests/Format/FormatTestMacroExpansion.cpp
@@ -63,6 +63,14 @@ TEST_F(FormatTestMacroExpansion, UnexpandConfiguredMacros) {
"ReturnMe());",
Style);
+ verifyFormat("void f() {\n"
+ " ASSIGN_OR_RETURN(MySomewhatLongType* variable,\n"
+ " MySomewhatLongFunction(SomethingElse()));\n"
+ " ASSIGN_OR_RETURN(MySomewhatLongType* variable,\n"
+ " MySomewhatLongFunction(SomethingElse()), "
+ "ReturnMe());",
+ getGoogleStyle());
+
verifyFormat(R"(
#define MACRO(a, b) ID(a + b)
)",
More information about the cfe-commits
mailing list