[clang] 93c93ff - [Format] Configure ASSIGN_OR_RETURN macros for Google style (#169037)
via cfe-commits
cfe-commits at lists.llvm.org
Tue Feb 17 02:01:09 PST 2026
Author: Ilya Biryukov
Date: 2026-02-17T11:01:05+01:00
New Revision: 93c93ff199a1a2b1c7beb74c966080793a0b1afd
URL: https://github.com/llvm/llvm-project/commit/93c93ff199a1a2b1c7beb74c966080793a0b1afd
DIFF: https://github.com/llvm/llvm-project/commit/93c93ff199a1a2b1c7beb74c966080793a0b1afd.diff
LOG: [Format] Configure ASSIGN_OR_RETURN macros for Google style (#169037)
These macros are used by many of the Google projects, e.g.:
-
https://chromium.googlesource.com/chromium/src/+/133.0.6943.141/base/types/expected_macros.h#104
-
https://github.com/protocolbuffers/protobuf/blob/1477683618b83e07bb8ec1d19b718e0d4d5c8357/src/google/protobuf/stubs/status_macros.h#L62
---------
Co-authored-by: Daniel Jasper <djasper at google.com>
Added:
Modified:
clang/lib/Format/Format.cpp
clang/unittests/Format/ConfigParseTest.cpp
clang/unittests/Format/FormatTestMacroExpansion.cpp
Removed:
################################################################################
diff --git a/clang/lib/Format/Format.cpp b/clang/lib/Format/Format.cpp
index 738e99dbb56a8..de149edc01a80 100644
--- a/clang/lib/Format/Format.cpp
+++ b/clang/lib/Format/Format.cpp
@@ -1915,6 +1915,11 @@ FormatStyle getGoogleStyle(FormatStyle::LanguageKind Language) {
GoogleStyle.IncludeStyle.IncludeIsMainRegex = "([-_](test|unittest))?$";
GoogleStyle.IndentCaseLabels = true;
GoogleStyle.KeepEmptyLines.AtStartOfBlock = false;
+
+ 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");
+
GoogleStyle.ObjCBinPackProtocolList = FormatStyle::BPS_Never;
GoogleStyle.ObjCSpaceAfterProperty = false;
GoogleStyle.ObjCSpaceBeforeProtocolList = true;
diff --git a/clang/unittests/Format/ConfigParseTest.cpp b/clang/unittests/Format/ConfigParseTest.cpp
index bea6b54883265..b45e2eb23765d 100644
--- a/clang/unittests/Format/ConfigParseTest.cpp
+++ b/clang/unittests/Format/ConfigParseTest.cpp
@@ -963,6 +963,13 @@ TEST(ConfigParseTest, ParsesConfiguration) {
StatementAttributeLikeMacros,
std::vector<std::string>({"emit", "Q_EMIT"}));
+ Style.Macros.clear();
+ CHECK_PARSE("{Macros: [foo]}", Macros, std::vector<std::string>({"foo"}));
+ std::vector<std::string> GoogleMacros;
+ GoogleMacros.push_back("ASSIGN_OR_RETURN(a, b)=a = (b)");
+ GoogleMacros.push_back("ASSIGN_OR_RETURN(a, b, c)=a = (b); if (x) return c");
+ CHECK_PARSE("BasedOnStyle: Google", Macros, GoogleMacros);
+
Style.StatementMacros.clear();
CHECK_PARSE("StatementMacros: [QUNUSED]", StatementMacros,
std::vector<std::string>{"QUNUSED"});
@@ -970,7 +977,6 @@ TEST(ConfigParseTest, ParsesConfiguration) {
std::vector<std::string>({"QUNUSED", "QT_REQUIRE_VERSION"}));
CHECK_PARSE_LIST(JavaImportGroups);
- CHECK_PARSE_LIST(Macros);
CHECK_PARSE_LIST(MacrosSkippedByRemoveParentheses);
CHECK_PARSE_LIST(NamespaceMacros);
CHECK_PARSE_LIST(ObjCPropertyAttributeOrder);
diff --git a/clang/unittests/Format/FormatTestMacroExpansion.cpp b/clang/unittests/Format/FormatTestMacroExpansion.cpp
index d391fe3d715c3..c00607f0b7115 100644
--- a/clang/unittests/Format/FormatTestMacroExpansion.cpp
+++ b/clang/unittests/Format/FormatTestMacroExpansion.cpp
@@ -58,10 +58,18 @@ TEST_F(FormatTestMacroExpansion, UnexpandConfiguredMacros) {
verifyFormat("ASSIGN_OR_RETURN(MySomewhatLongType *variable,\n"
" MySomewhatLongFunction(SomethingElse()));",
Style);
- verifyFormat("ASSIGN_OR_RETURN(MySomewhatLongType *variable,\n"
- " MySomewhatLongFunction(SomethingElse()), "
- "ReturnMe());",
- Style);
+ verifyFormat(
+ "ASSIGN_OR_RETURN(MySomewhatLongType *variable,\n"
+ " MySomewhatLongFunction(SomethingElse()), RetMe());",
+ Style);
+
+ verifyFormat(
+ "void f() {\n"
+ " ASSIGN_OR_RETURN(MySomewhatLongType* variable,\n"
+ " MySomewhatLongFunction(SomethingElse()));\n"
+ " ASSIGN_OR_RETURN(MySomewhatLongType* variable,\n"
+ " MySomewhatLongFunction(SomethingElse()), RetMe());",
+ getGoogleStyle());
verifyFormat(R"(
#define MACRO(a, b) ID(a + b)
More information about the cfe-commits
mailing list