[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