[clang-tools-extra] [clang-tidy] Preserve line endings in macro-to-enum fixes (PR #202054)

Baranov Victor via cfe-commits cfe-commits at lists.llvm.org
Sat Jun 6 12:59:04 PDT 2026


================
@@ -470,11 +470,18 @@ void MacroToEnumCallbacks::warnMacroEnum(const EnumMacro &Macro) const {
 void MacroToEnumCallbacks::fixEnumMacro(const MacroList &MacroList) const {
   SourceLocation Begin =
       MacroList.front().Directive->getMacroInfo()->getDefinitionLoc();
+  const StringRef LineEnding =
+      SM.getBufferData(SM.getFileID(Begin)).detectEOL();
+  std::string EnumBegin = "enum {";
+  EnumBegin += LineEnding;
+  std::string EnumEnd = "};";
+  EnumEnd += LineEnding;
+
   Begin = SM.translateLineCol(SM.getFileID(Begin),
                               SM.getSpellingLineNumber(Begin), 1);
   const DiagnosticBuilder Diagnostic =
       Check->diag(Begin, "replace macro with enum")
-      << FixItHint::CreateInsertion(Begin, "enum {\n");
+      << FixItHint::CreateInsertion(Begin, EnumBegin);
----------------
vbvictor wrote:

Can we do `"enum {" + LineEnding` here instead of temporal variables.
I'd advocate for shorter variables scope if possible

https://github.com/llvm/llvm-project/pull/202054


More information about the cfe-commits mailing list