[clang-tools-extra] 6f47b6d - [clang-tidy] Preserve newline style in utility fix-its. NFC. [1/N] (#202483)
via cfe-commits
cfe-commits at lists.llvm.org
Wed Jun 10 06:28:12 PDT 2026
Author: Zeyi Xu
Date: 2026-06-10T21:28:06+08:00
New Revision: 6f47b6de08a38ce89349231d970bcb9d999678a3
URL: https://github.com/llvm/llvm-project/commit/6f47b6de08a38ce89349231d970bcb9d999678a3
DIFF: https://github.com/llvm/llvm-project/commit/6f47b6de08a38ce89349231d970bcb9d999678a3.diff
LOG: [clang-tidy] Preserve newline style in utility fix-its. NFC. [1/N] (#202483)
This commit avoids introducing LF-only lines into files that use CRLF
when clang-tidy inserts new includes or adds missing header guards.
As of AI Usage: Assisted by Codex
Follow-up of #202271
Added:
Modified:
clang-tools-extra/clang-tidy/utils/HeaderGuard.cpp
clang-tools-extra/clang-tidy/utils/IncludeSorter.cpp
Removed:
################################################################################
diff --git a/clang-tools-extra/clang-tidy/utils/HeaderGuard.cpp b/clang-tools-extra/clang-tidy/utils/HeaderGuard.cpp
index 338e7ad4004ae..84dbc695a3de4 100644
--- a/clang-tools-extra/clang-tidy/utils/HeaderGuard.cpp
+++ b/clang-tools-extra/clang-tidy/utils/HeaderGuard.cpp
@@ -239,16 +239,21 @@ class HeaderGuardPPCallbacks : public PPCallbacks {
if (SeenMacro)
continue;
+ const StringRef LineEnding = SM.getBufferData(FID).detectEOL();
+
Check->diag(StartLoc, "header is missing header guard")
<< FixItHint::CreateInsertion(
- StartLoc,
- (Twine("#ifndef ") + CPPVar + "\n#define " + CPPVar + "\n\n")
- .str())
+ StartLoc, (Twine("#ifndef ") + CPPVar + LineEnding +
+ "#define " + CPPVar + LineEnding + LineEnding)
+ .str())
<< FixItHint::CreateInsertion(
SM.getLocForEndOfFile(FID),
- Check->shouldSuggestEndifComment(FileName)
- ? "\n#" + Check->formatEndIf(CPPVar) + "\n"
- : "\n#endif\n");
+ (Twine(LineEnding) + "#" +
+ (Check->shouldSuggestEndifComment(FileName)
+ ? Check->formatEndIf(CPPVar)
+ : "endif") +
+ LineEnding)
+ .str());
}
}
diff --git a/clang-tools-extra/clang-tidy/utils/IncludeSorter.cpp b/clang-tools-extra/clang-tidy/utils/IncludeSorter.cpp
index 66a0e8d855b47..f4ab9124cfca1 100644
--- a/clang-tools-extra/clang-tidy/utils/IncludeSorter.cpp
+++ b/clang-tools-extra/clang-tidy/utils/IncludeSorter.cpp
@@ -142,20 +142,24 @@ void IncludeSorter::addInclude(StringRef FileName, bool IsAngled,
std::optional<FixItHint>
IncludeSorter::createIncludeInsertion(StringRef FileName, bool IsAngled) {
+ const StringRef LineEnding =
+ SourceMgr->getBufferData(CurrentFileID).detectEOL();
std::string IncludeStmt;
if (Style == IncludeStyle::IS_Google_ObjC) {
- IncludeStmt = IsAngled
- ? llvm::Twine("#import <" + FileName + ">\n").str()
- : llvm::Twine("#import \"" + FileName + "\"\n").str();
+ IncludeStmt =
+ IsAngled
+ ? llvm::Twine("#import <" + FileName + ">" + LineEnding).str()
+ : llvm::Twine("#import \"" + FileName + "\"" + LineEnding).str();
} else {
- IncludeStmt = IsAngled
- ? llvm::Twine("#include <" + FileName + ">\n").str()
- : llvm::Twine("#include \"" + FileName + "\"\n").str();
+ IncludeStmt =
+ IsAngled
+ ? llvm::Twine("#include <" + FileName + ">" + LineEnding).str()
+ : llvm::Twine("#include \"" + FileName + "\"" + LineEnding).str();
}
if (SourceLocations.empty()) {
// If there are no includes in this file, add it in the first line.
// FIXME: insert after the file comment or the header guard, if present.
- IncludeStmt.append("\n");
+ IncludeStmt.append(LineEnding);
return FixItHint::CreateInsertion(
SourceMgr->getLocForStartOfFile(CurrentFileID), IncludeStmt);
}
@@ -201,7 +205,7 @@ IncludeSorter::createIncludeInsertion(StringRef FileName, bool IsAngled) {
const std::string &LastInclude = IncludeBucket[NonEmptyKind].back();
const SourceRange LastIncludeLocation =
IncludeLocations[LastInclude].back();
- IncludeStmt = '\n' + IncludeStmt;
+ IncludeStmt.insert(0, LineEnding);
return FixItHint::CreateInsertion(LastIncludeLocation.getEnd(),
IncludeStmt);
}
@@ -209,7 +213,7 @@ IncludeSorter::createIncludeInsertion(StringRef FileName, bool IsAngled) {
const std::string &FirstInclude = IncludeBucket[NonEmptyKind][0];
const SourceRange FirstIncludeLocation =
IncludeLocations[FirstInclude].back();
- IncludeStmt.append("\n");
+ IncludeStmt.append(LineEnding);
return FixItHint::CreateInsertion(FirstIncludeLocation.getBegin(),
IncludeStmt);
}
More information about the cfe-commits
mailing list