[clang] [clang-tools-extra] [clang][include cleaner] Fix MainHeader insertion issue (PR #212852)

kadir çetinkaya via cfe-commits cfe-commits at lists.llvm.org
Wed Sep 2 06:59:28 PDT 2026


================
@@ -512,11 +516,83 @@ HeaderIncludes::insert(llvm::StringRef Header, bool IsAngled,
   return tooling::Replacement(FileName, InsertOffset, 0, NewInclude);
 }
 
-tooling::Replacements HeaderIncludes::remove(llvm::StringRef IncludeName,
+HeaderIncludes::HeaderToInsert::HeaderToInsert(
+    llvm::StringRef RawOrSpelledHeader, IncludeDirective Directive,
+    QuoteStyle QuoteStyle)
+    : Directive(Directive) {
+  if (RawOrSpelledHeader.starts_with("<")) {
+    Header = RawOrSpelledHeader.trim("<>").str();
+    this->IsAngled = QuoteStyle != QuoteStyle::QUOTED;
+  } else if (RawOrSpelledHeader.starts_with("\"")) {
+    Header = RawOrSpelledHeader.trim("\"").str();
+    this->IsAngled = QuoteStyle == QuoteStyle::ANGLED;
+  }
+}
+
+tooling::Replacements
+HeaderIncludes::insert(llvm::ArrayRef<HeaderToInsert> Headers) const {
----------------
kadircet wrote:

nit: make the param type a `std::vector` directly, so that we can prevent a copy if callers can just `std::move` their vectors at hand.

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


More information about the cfe-commits mailing list