[clang-tools-extra] 6a6c7ed - [clangd] Use include_cleaner spelling strategies in clangd.
Viktoriia Bakalova via cfe-commits
cfe-commits at lists.llvm.org
Wed Jun 14 07:07:02 PDT 2023
Author: Viktoriia Bakalova
Date: 2023-06-14T14:06:35Z
New Revision: 6a6c7ed5cd8d1a7e0991128e46abfd2b7d95f8e8
URL: https://github.com/llvm/llvm-project/commit/6a6c7ed5cd8d1a7e0991128e46abfd2b7d95f8e8
DIFF: https://github.com/llvm/llvm-project/commit/6a6c7ed5cd8d1a7e0991128e46abfd2b7d95f8e8.diff
LOG: [clangd] Use include_cleaner spelling strategies in clangd.
Differential Revision: https://reviews.llvm.org/D152913
Added:
Modified:
clang-tools-extra/clangd/Hover.cpp
clang-tools-extra/clangd/IncludeCleaner.cpp
clang-tools-extra/clangd/IncludeCleaner.h
Removed:
################################################################################
diff --git a/clang-tools-extra/clangd/Hover.cpp b/clang-tools-extra/clangd/Hover.cpp
index 0ae70dd121ebf..d7a249c6bc21f 100644
--- a/clang-tools-extra/clangd/Hover.cpp
+++ b/clang-tools-extra/clangd/Hover.cpp
@@ -18,6 +18,7 @@
#include "Selection.h"
#include "SourceCode.h"
#include "clang-include-cleaner/Analysis.h"
+#include "clang-include-cleaner/IncludeSpeller.h"
#include "clang-include-cleaner/Types.h"
#include "index/SymbolCollector.h"
#include "support/Logger.h"
@@ -1223,7 +1224,9 @@ void maybeAddSymbolProviders(ParsedAST &AST, HoverInfo &HI,
// on local variables, etc.
return;
- HI.Provider = spellHeader(AST, SM.getFileEntryForID(SM.getMainFileID()), H);
+ HI.Provider = include_cleaner::spellHeader(
+ {H, AST.getPreprocessor().getHeaderSearchInfo(),
+ SM.getFileEntryForID(SM.getMainFileID())});
}
// FIXME: similar functions are present in FindHeaders.cpp (symbolName)
diff --git a/clang-tools-extra/clangd/IncludeCleaner.cpp b/clang-tools-extra/clangd/IncludeCleaner.cpp
index 95585a61c023d..95f6064b769a7 100644
--- a/clang-tools-extra/clangd/IncludeCleaner.cpp
+++ b/clang-tools-extra/clangd/IncludeCleaner.cpp
@@ -182,8 +182,9 @@ std::vector<Diag> generateMissingIncludeDiagnostics(
continue;
}
- std::string Spelling =
- spellHeader(AST, MainFile, SymbolWithMissingInclude.Providers.front());
+ std::string Spelling = include_cleaner::spellHeader(
+ {SymbolWithMissingInclude.Providers.front(),
+ AST.getPreprocessor().getHeaderSearchInfo(), MainFile});
llvm::StringRef HeaderRef{Spelling};
bool Angled = HeaderRef.starts_with("<");
@@ -412,22 +413,6 @@ convertIncludes(const SourceManager &SM,
return ConvertedIncludes;
}
-std::string spellHeader(ParsedAST &AST, const FileEntry *MainFile,
- include_cleaner::Header Provider) {
- if (Provider.kind() == include_cleaner::Header::Physical) {
- if (auto CanonicalPath =
- getCanonicalPath(Provider.physical()->getLastRef(),
- AST.getSourceManager().getFileManager())) {
- std::string SpelledHeader =
- llvm::cantFail(URI::includeSpelling(URI::create(*CanonicalPath)));
- if (!SpelledHeader.empty())
- return SpelledHeader;
- }
- }
- return include_cleaner::spellHeader(
- {Provider, AST.getPreprocessor().getHeaderSearchInfo(), MainFile});
-}
-
IncludeCleanerFindings computeIncludeCleanerFindings(ParsedAST &AST) {
// Interaction is only polished for C/CPP.
if (AST.getLangOpts().ObjC)
diff --git a/clang-tools-extra/clangd/IncludeCleaner.h b/clang-tools-extra/clangd/IncludeCleaner.h
index 58849846e0df7..edd89777faf3d 100644
--- a/clang-tools-extra/clangd/IncludeCleaner.h
+++ b/clang-tools-extra/clangd/IncludeCleaner.h
@@ -75,11 +75,6 @@ include_cleaner::Includes
convertIncludes(const SourceManager &SM,
const llvm::ArrayRef<Inclusion> Includes);
-/// Determines the header spelling of an include-cleaner header
-/// representation. The spelling contains the ""<> characters.
-std::string spellHeader(ParsedAST &AST, const FileEntry *MainFile,
- include_cleaner::Header Provider);
-
std::vector<include_cleaner::SymbolReference>
collectMacroReferences(ParsedAST &AST);
More information about the cfe-commits
mailing list