[clang] [clang-format] Allow `Language: Cpp` for C files (PR #133033)
via cfe-commits
cfe-commits at lists.llvm.org
Tue Mar 25 21:48:06 PDT 2025
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-clang-format
Author: Owen Pan (owenca)
<details>
<summary>Changes</summary>
Fix #<!-- -->132832
---
Full diff: https://github.com/llvm/llvm-project/pull/133033.diff
2 Files Affected:
- (modified) clang/lib/Format/Format.cpp (+10-3)
- (modified) clang/unittests/Format/ConfigParseTest.cpp (+6)
``````````diff
diff --git a/clang/lib/Format/Format.cpp b/clang/lib/Format/Format.cpp
index c67db4752e87b..87e36578d9958 100644
--- a/clang/lib/Format/Format.cpp
+++ b/clang/lib/Format/Format.cpp
@@ -2129,10 +2129,17 @@ std::error_code parseConfiguration(llvm::MemoryBufferRef Config,
LanguageFound = true;
}
if (!LanguageFound) {
- if (Styles.empty() || Styles[0].Language != FormatStyle::LK_None)
+ if (Styles.empty())
return make_error_code(ParseError::Unsuitable);
- FormatStyle DefaultStyle = Styles[0];
- DefaultStyle.Language = Language;
+ auto DefaultStyle = Styles[0];
+ auto &DefaultLanguage = DefaultStyle.Language;
+ if (DefaultLanguage != FormatStyle::LK_None &&
+ // For backward compatibility.
+ !(DefaultLanguage == FormatStyle::LK_Cpp &&
+ Language == FormatStyle::LK_C)) {
+ return make_error_code(ParseError::Unsuitable);
+ }
+ DefaultLanguage = Language;
StyleSet.Add(std::move(DefaultStyle));
}
*Style = *StyleSet.Get(Language);
diff --git a/clang/unittests/Format/ConfigParseTest.cpp b/clang/unittests/Format/ConfigParseTest.cpp
index cc42642f99252..4c17c1a50face 100644
--- a/clang/unittests/Format/ConfigParseTest.cpp
+++ b/clang/unittests/Format/ConfigParseTest.cpp
@@ -1230,6 +1230,12 @@ TEST(ConfigParseTest, ParsesConfigurationWithLanguages) {
IndentWidth, 56u);
}
+TEST(ConfigParseTest, AllowCppForC) {
+ FormatStyle Style = {};
+ Style.Language = FormatStyle::LK_C;
+ EXPECT_EQ(parseConfiguration("Language: Cpp", &Style), ParseError::Success);
+}
+
TEST(ConfigParseTest, UsesLanguageForBasedOnStyle) {
FormatStyle Style = {};
Style.Language = FormatStyle::LK_JavaScript;
``````````
</details>
https://github.com/llvm/llvm-project/pull/133033
More information about the cfe-commits
mailing list