Author: omtcyfz
Date: Thu Sep  6 08:10:10 2018
New Revision: 341552

URL: http://llvm.org/viewvc/llvm-project?rev=341552&view=rev
Log:
[clangd] Fix Dex initialization

This patch sets URI schemes of Dex to SymbolCollector's default schemes
in case callers tried to pass empty list of schemes. This was the case
for initialization in Clangd main and was a reason of incorrect
behavior.

Also, it fixes a bug with missed `continue;` after spotting invalid URI
scheme conversion.

Modified:
    clang-tools-extra/trunk/clangd/index/dex/DexIndex.cpp
    clang-tools-extra/trunk/clangd/index/dex/DexIndex.h

Modified: clang-tools-extra/trunk/clangd/index/dex/DexIndex.cpp
URL: 
http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clangd/index/dex/DexIndex.cpp?rev=341552&r1=341551&r2=341552&view=diff
==============================================================================
--- clang-tools-extra/trunk/clangd/index/dex/DexIndex.cpp (original)
+++ clang-tools-extra/trunk/clangd/index/dex/DexIndex.cpp Thu Sep  6 08:10:10 
2018
@@ -59,6 +59,7 @@ std::vector<std::unique_ptr<Iterator>> c
            "scheme. fuzzyFind request will ignore it.",
            Path);
       llvm::consumeError(PathURI.takeError());
+      continue;
     }
     const auto PathProximityURIs = generateProximityURIs(PathURI->toString());
     for (const auto &ProximityURI : PathProximityURIs)

Modified: clang-tools-extra/trunk/clangd/index/dex/DexIndex.h
URL: 
http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clangd/index/dex/DexIndex.h?rev=341552&r1=341551&r2=341552&view=diff
==============================================================================
--- clang-tools-extra/trunk/clangd/index/dex/DexIndex.h (original)
+++ clang-tools-extra/trunk/clangd/index/dex/DexIndex.h Thu Sep  6 08:10:10 2018
@@ -22,6 +22,7 @@
 
 #include "../Index.h"
 #include "../MemIndex.h"
+#include "../SymbolCollector.h"
 #include "Iterator.h"
 #include "Token.h"
 #include "Trigram.h"
@@ -40,8 +41,14 @@ class DexIndex : public SymbolIndex {
 public:
   // All symbols must outlive this index.
   template <typename Range>
-  DexIndex(Range &&Symbols, llvm::ArrayRef<std::string> URISchemes)
-      : URISchemes(URISchemes) {
+  DexIndex(Range &&Symbols, llvm::ArrayRef<std::string> Schemes)
+      : URISchemes(Schemes) {
+    // If Schemes don't contain any items, fall back to SymbolCollector's
+    // default URI schemes.
+    if (URISchemes.empty()) {
+      SymbolCollector::Options Opts;
+      URISchemes = Opts.URISchemes;
+    }
     for (auto &&Sym : Symbols)
       this->Symbols.push_back(&Sym);
     buildIndex();
@@ -90,7 +97,7 @@ private:
   llvm::DenseMap<Token, PostingList> InvertedIndex;
   std::shared_ptr<void> KeepAlive; // poor man's move-only std::any
 
-  const std::vector<std::string> URISchemes;
+  std::vector<std::string> URISchemes;
 };
 
 /// Returns Search Token for a number of parent directories of given Path.


_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to