@@ -656,16 +656,22 @@ ParsedAST::build(llvm::StringRef Filename, const ParseInputs &Inputs,
656656 : Symbol::Include;
657657 FixIncludes.emplace (Filename, Inserter, *Inputs.Index ,
658658 /* IndexRequestLimit=*/ 5 , Directive);
659- ASTDiags.contributeFixes (
660- [&FixIncludes, &CTContext](const Diag &Diag,
661- const clang::Diagnostic &Info) {
662- auto Fixes = std::vector<Fix>();
663- auto NoLintFixes = noLintFixes (*CTContext, Info, Diag);
664- Fixes.insert (Fixes.end (), NoLintFixes.begin (), NoLintFixes.end ());
665- auto IncludeFixes = FixIncludes->fix (Diag.Severity , Info);
666- Fixes.insert (Fixes.end (), IncludeFixes.begin (), IncludeFixes.end ());
667- return Fixes;
668- });
659+ ASTDiags.contributeFixes ([&FixIncludes,
660+ &CTContext](const Diag &Diag,
661+ const clang::Diagnostic &Info) {
662+ auto Fixes = std::vector<Fix>();
663+ auto IncludeFixes = FixIncludes->fix (Diag.Severity , Info);
664+
665+ // Ensures that if clang later introduces its own fix-it for includes it
666+ // will get on our radar.
667+ assert ((IncludeFixes.empty () || Info.getNumFixItHints () == 0 ) &&
668+ " Include-fixer replaced a note with clang fix-its attached!" );
669+
670+ Fixes.insert (Fixes.end (), IncludeFixes.begin (), IncludeFixes.end ());
671+ auto NoLintFixes = noLintFixes (*CTContext, Info, Diag);
672+ Fixes.insert (Fixes.end (), NoLintFixes.begin (), NoLintFixes.end ());
673+ return Fixes;
674+ });
669675 Clang->setExternalSemaSource (FixIncludes->unresolvedNameRecorder ());
670676 }
671677 }
0 commit comments