[clang-tools-extra] cd5fcea - [clangd] Revert to older include spelling approach.
Viktoriia Bakalova via cfe-commits
cfe-commits at lists.llvm.org
Mon Jun 5 08:18:38 PDT 2023
Author: Viktoriia Bakalova
Date: 2023-06-05T15:18:28Z
New Revision: cd5fcea6d4c70a7328ca9538c9098d9f5af69682
URL: https://github.com/llvm/llvm-project/commit/cd5fcea6d4c70a7328ca9538c9098d9f5af69682
DIFF: https://github.com/llvm/llvm-project/commit/cd5fcea6d4c70a7328ca9538c9098d9f5af69682.diff
LOG: [clangd] Revert to older include spelling approach.
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 80303267b31a0..d1f6f3a7b06c0 100644
--- a/clang-tools-extra/clangd/Hover.cpp
+++ b/clang-tools-extra/clangd/Hover.cpp
@@ -18,7 +18,6 @@
#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,9 +1222,7 @@ void maybeAddSymbolProviders(ParsedAST &AST, HoverInfo &HI,
// on local variables, etc.
return;
- HI.Provider = include_cleaner::spellHeader(
- {H, AST.getPreprocessor().getHeaderSearchInfo(),
- SM.getFileEntryForID(SM.getMainFileID())});
+ HI.Provider = spellHeader(AST, SM.getFileEntryForID(SM.getMainFileID()), H);
}
// 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 c9d32a00fc15f..fa30592e75807 100644
--- a/clang-tools-extra/clangd/IncludeCleaner.cpp
+++ b/clang-tools-extra/clangd/IncludeCleaner.cpp
@@ -198,9 +198,9 @@ std::vector<Diag> generateMissingIncludeDiagnostics(
continue;
}
- std::string Spelling = include_cleaner::spellHeader(
- {SymbolWithMissingInclude.Providers.front(),
- AST.getPreprocessor().getHeaderSearchInfo(), MainFile});
+ std::string Spelling =
+ spellHeader(AST, MainFile, SymbolWithMissingInclude.Providers.front());
+
llvm::StringRef HeaderRef{Spelling};
bool Angled = HeaderRef.starts_with("<");
// We might suggest insertion of an existing include in edge cases, e.g.,
@@ -334,6 +334,22 @@ 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});
+}
+
std::vector<const Inclusion *>
getUnused(ParsedAST &AST,
const llvm::DenseSet<IncludeStructure::HeaderID> &ReferencedFiles,
diff --git a/clang-tools-extra/clangd/IncludeCleaner.h b/clang-tools-extra/clangd/IncludeCleaner.h
index c4051b30ca317..675c05a53d5f8 100644
--- a/clang-tools-extra/clangd/IncludeCleaner.h
+++ b/clang-tools-extra/clangd/IncludeCleaner.h
@@ -74,6 +74,11 @@ 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