[PATCH] D51852: [clangd] Implement FuzzyFindRequest JSON (de)serialization

Yvan Roux via cfe-commits cfe-commits at lists.llvm.org
Mon Sep 10 07:14:54 PDT 2018


Hi Kirill,

This commit broke ARMV8 buildbots, logs are available here:
http://lab.llvm.org:8011/builders/clang-cmake-armv8-quick/builds/6493/steps/build%20stage%201/logs/stdio

Thanks
Yvan
On Mon, 10 Sep 2018 at 13:52, Kirill Bobyrev via Phabricator via
llvm-commits <llvm-commits at lists.llvm.org> wrote:
>
> This revision was automatically updated to reflect the committed changes.
> Closed by commit rL341802: [clangd] Implement FuzzyFindRequest JSON (de)serialization (authored by omtcyfz, committed by ).
> Herald added a subscriber: llvm-commits.
>
> Changed prior to commit:
>   https://reviews.llvm.org/D51852?vs=164648&id=164655#toc
>
> Repository:
>   rL LLVM
>
> https://reviews.llvm.org/D51852
>
> Files:
>   clang-tools-extra/trunk/clangd/CodeComplete.cpp
>   clang-tools-extra/trunk/clangd/index/Index.cpp
>   clang-tools-extra/trunk/clangd/index/Index.h
>
>
> Index: clang-tools-extra/trunk/clangd/CodeComplete.cpp
> ===================================================================
> --- clang-tools-extra/trunk/clangd/CodeComplete.cpp
> +++ clang-tools-extra/trunk/clangd/CodeComplete.cpp
> @@ -1381,8 +1381,7 @@
>      Req.Scopes = QueryScopes;
>      // FIXME: we should send multiple weighted paths here.
>      Req.ProximityPaths.push_back(FileName);
> -    vlog("Code complete: fuzzyFind(\"{0}\", scopes=[{1}])", Req.Query,
> -         llvm::join(Req.Scopes.begin(), Req.Scopes.end(), ","));
> +    vlog("Code complete: fuzzyFind({0:2})", toJSON(Req));
>
>      if (SpecFuzzyFind)
>        SpecFuzzyFind->NewReq = Req;
> Index: clang-tools-extra/trunk/clangd/index/Index.h
> ===================================================================
> --- clang-tools-extra/trunk/clangd/index/Index.h
> +++ clang-tools-extra/trunk/clangd/index/Index.h
> @@ -19,8 +19,10 @@
>  #include "llvm/ADT/SmallVector.h"
>  #include "llvm/ADT/StringExtras.h"
>  #include "llvm/ADT/StringRef.h"
> +#include "llvm/Support/JSON.h"
>  #include "llvm/Support/StringSaver.h"
>  #include <array>
> +#include <limits>
>  #include <mutex>
>  #include <string>
>  #include <tuple>
> @@ -435,7 +437,7 @@
>    std::vector<std::string> Scopes;
>    /// \brief The number of top candidates to return. The index may choose to
>    /// return more than this, e.g. if it doesn't know which candidates are best.
> -  size_t MaxCandidateCount = UINT_MAX;
> +  size_t MaxCandidateCount = std::numeric_limits<size_t>::max();
>    /// If set to true, only symbols for completion support will be considered.
>    bool RestrictForCodeCompletion = false;
>    /// Contextually relevant files (e.g. the file we're code-completing in).
> @@ -450,6 +452,8 @@
>    }
>    bool operator!=(const FuzzyFindRequest &Req) const { return !(*this == Req); }
>  };
> +bool fromJSON(const llvm::json::Value &Value, FuzzyFindRequest &Request);
> +llvm::json::Value toJSON(const FuzzyFindRequest &Request);
>
>  struct LookupRequest {
>    llvm::DenseSet<SymbolID> IDs;
> Index: clang-tools-extra/trunk/clangd/index/Index.cpp
> ===================================================================
> --- clang-tools-extra/trunk/clangd/index/Index.cpp
> +++ clang-tools-extra/trunk/clangd/index/Index.cpp
> @@ -175,6 +175,33 @@
>    return Index;
>  }
>
> +bool fromJSON(const llvm::json::Value &Parameters, FuzzyFindRequest &Request) {
> +  json::ObjectMapper O(Parameters);
> +  llvm::Optional<int64_t> MaxCandidateCount;
> +  bool OK =
> +      O && O.map("Query", Request.Query) && O.map("Scopes", Request.Scopes) &&
> +      O.map("RestrictForCodeCompletion", Request.RestrictForCodeCompletion) &&
> +      O.map("ProximityPaths", Request.ProximityPaths) &&
> +      O.map("MaxCandidateCount", MaxCandidateCount);
> +  if (MaxCandidateCount)
> +    Request.MaxCandidateCount = MaxCandidateCount.getValue();
> +  return OK;
> +}
> +
> +llvm::json::Value toJSON(const FuzzyFindRequest &Request) {
> +  auto Result = json::Object{
> +      {"Query", Request.Query},
> +      {"Scopes", json::Array{Request.Scopes}},
> +      {"RestrictForCodeCompletion", Request.RestrictForCodeCompletion},
> +      {"ProximityPaths", json::Array{Request.ProximityPaths}},
> +  };
> +  // A huge limit means no limit, leave it out.
> +  if (Request.MaxCandidateCount <= std::numeric_limits<int64_t>::max())
> +    Result["MaxCandidateCount"] =
> +        static_cast<int64_t>(Request.MaxCandidateCount);
> +  return Result;
> +}
> +
>  bool SwapIndex::fuzzyFind(const FuzzyFindRequest &R,
>                            llvm::function_ref<void(const Symbol &)> CB) const {
>    return snapshot()->fuzzyFind(R, CB);
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits


More information about the cfe-commits mailing list