Author: hokein Date: Mon Sep 23 07:39:37 2019 New Revision: 372617 URL: http://llvm.org/viewvc/llvm-project?rev=372617&view=rev Log: [clangd] Simplify the callside of URI::resolve, NFC.
Summary: - Add a overrloded URI::resolve, which accepts a string URI; - also fixed some callside that don't check the error; Reviewers: kadircet Subscribers: ilya-biryukov, MaskRay, jkorous, arphaman, usaxena95, cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D67916 Modified: clang-tools-extra/trunk/clangd/CodeComplete.cpp clang-tools-extra/trunk/clangd/FindSymbols.cpp clang-tools-extra/trunk/clangd/IncludeFixer.cpp clang-tools-extra/trunk/clangd/URI.cpp clang-tools-extra/trunk/clangd/URI.h clang-tools-extra/trunk/clangd/index/Background.cpp clang-tools-extra/trunk/clangd/index/BackgroundIndexLoader.cpp Modified: clang-tools-extra/trunk/clangd/CodeComplete.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clangd/CodeComplete.cpp?rev=372617&r1=372616&r2=372617&view=diff ============================================================================== --- clang-tools-extra/trunk/clangd/CodeComplete.cpp (original) +++ clang-tools-extra/trunk/clangd/CodeComplete.cpp Mon Sep 23 07:39:37 2019 @@ -318,11 +318,8 @@ struct CodeCompletionBuilder { // Turn absolute path into a literal string that can be #included. auto Inserted = [&](llvm::StringRef Header) -> llvm::Expected<std::pair<std::string, bool>> { - auto DeclaringURI = - URI::parse(C.IndexResult->CanonicalDeclaration.FileURI); - if (!DeclaringURI) - return DeclaringURI.takeError(); - auto ResolvedDeclaring = URI::resolve(*DeclaringURI, FileName); + auto ResolvedDeclaring = + URI::resolve(C.IndexResult->CanonicalDeclaration.FileURI, FileName); if (!ResolvedDeclaring) return ResolvedDeclaring.takeError(); auto ResolvedInserted = toHeaderFile(Header, FileName); Modified: clang-tools-extra/trunk/clangd/FindSymbols.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clangd/FindSymbols.cpp?rev=372617&r1=372616&r2=372617&view=diff ============================================================================== --- clang-tools-extra/trunk/clangd/FindSymbols.cpp (original) +++ clang-tools-extra/trunk/clangd/FindSymbols.cpp Mon Sep 23 07:39:37 2019 @@ -43,18 +43,11 @@ llvm::Expected<Location> symbolToLocatio llvm::StringRef HintPath) { // Prefer the definition over e.g. a function declaration in a header auto &CD = Sym.Definition ? Sym.Definition : Sym.CanonicalDeclaration; - auto Uri = URI::parse(CD.FileURI); - if (!Uri) { - return llvm::make_error<llvm::StringError>( - formatv("Could not parse URI '{0}' for symbol '{1}'.", CD.FileURI, - Sym.Name), - llvm::inconvertibleErrorCode()); - } - auto Path = URI::resolve(*Uri, HintPath); + auto Path = URI::resolve(CD.FileURI, HintPath); if (!Path) { return llvm::make_error<llvm::StringError>( - formatv("Could not resolve path for URI '{0}' for symbol '{1}'.", - Uri->toString(), Sym.Name), + formatv("Could not resolve path for symbol '{0}': {1}", + Sym.Name, llvm::toString(Path.takeError())), llvm::inconvertibleErrorCode()); } Location L; Modified: clang-tools-extra/trunk/clangd/IncludeFixer.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clangd/IncludeFixer.cpp?rev=372617&r1=372616&r2=372617&view=diff ============================================================================== --- clang-tools-extra/trunk/clangd/IncludeFixer.cpp (original) +++ clang-tools-extra/trunk/clangd/IncludeFixer.cpp Mon Sep 23 07:39:37 2019 @@ -144,10 +144,8 @@ std::vector<Fix> IncludeFixer::fixIncomp std::vector<Fix> IncludeFixer::fixesForSymbols(const SymbolSlab &Syms) const { auto Inserted = [&](const Symbol &Sym, llvm::StringRef Header) -> llvm::Expected<std::pair<std::string, bool>> { - auto DeclaringURI = URI::parse(Sym.CanonicalDeclaration.FileURI); - if (!DeclaringURI) - return DeclaringURI.takeError(); - auto ResolvedDeclaring = URI::resolve(*DeclaringURI, File); + auto ResolvedDeclaring = + URI::resolve(Sym.CanonicalDeclaration.FileURI, File); if (!ResolvedDeclaring) return ResolvedDeclaring.takeError(); auto ResolvedInserted = toHeaderFile(Header, File); Modified: clang-tools-extra/trunk/clangd/URI.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clangd/URI.cpp?rev=372617&r1=372616&r2=372617&view=diff ============================================================================== --- clang-tools-extra/trunk/clangd/URI.cpp (original) +++ clang-tools-extra/trunk/clangd/URI.cpp Mon Sep 23 07:39:37 2019 @@ -183,6 +183,17 @@ llvm::Expected<URI> URI::parse(llvm::Str return U; } +llvm::Expected<std::string> URI::resolve(llvm::StringRef FileURI, + llvm::StringRef HintPath) { + auto Uri = URI::parse(FileURI); + if (!Uri) + return Uri.takeError(); + auto Path = URI::resolve(*Uri, HintPath); + if (!Path) + return Path.takeError(); + return *Path; +} + llvm::Expected<URI> URI::create(llvm::StringRef AbsolutePath, llvm::StringRef Scheme) { if (!llvm::sys::path::is_absolute(AbsolutePath)) Modified: clang-tools-extra/trunk/clangd/URI.h URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clangd/URI.h?rev=372617&r1=372616&r2=372617&view=diff ============================================================================== --- clang-tools-extra/trunk/clangd/URI.h (original) +++ clang-tools-extra/trunk/clangd/URI.h Mon Sep 23 07:39:37 2019 @@ -63,6 +63,10 @@ public: static llvm::Expected<std::string> resolve(const URI &U, llvm::StringRef HintPath = ""); + /// Same as above, in addition it parses the \p FileURI using URI::parse. + static llvm::Expected<std::string> resolve(llvm::StringRef FileURI, + llvm::StringRef HintPath = ""); + /// Resolves \p AbsPath into a canonical path of its URI, by converting /// \p AbsPath to URI and resolving the URI to get th canonical path. /// This ensures that paths with the same URI are resolved into consistent Modified: clang-tools-extra/trunk/clangd/index/Background.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clangd/index/Background.cpp?rev=372617&r1=372616&r2=372617&view=diff ============================================================================== --- clang-tools-extra/trunk/clangd/index/Background.cpp (original) +++ clang-tools-extra/trunk/clangd/index/Background.cpp Mon Sep 23 07:39:37 2019 @@ -69,13 +69,7 @@ public: llvm::StringRef resolve(llvm::StringRef FileURI) { auto I = URIToPathCache.try_emplace(FileURI); if (I.second) { - auto U = URI::parse(FileURI); - if (!U) { - elog("Failed to parse URI {0}: {1}", FileURI, U.takeError()); - assert(false && "Failed to parse URI"); - return ""; - } - auto Path = URI::resolve(*U, HintPath); + auto Path = URI::resolve(FileURI, HintPath); if (!Path) { elog("Failed to resolve URI {0}: {1}", FileURI, Path.takeError()); assert(false && "Failed to resolve URI"); Modified: clang-tools-extra/trunk/clangd/index/BackgroundIndexLoader.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clangd/index/BackgroundIndexLoader.cpp?rev=372617&r1=372616&r2=372617&view=diff ============================================================================== --- clang-tools-extra/trunk/clangd/index/BackgroundIndexLoader.cpp (original) +++ clang-tools-extra/trunk/clangd/index/BackgroundIndexLoader.cpp Mon Sep 23 07:39:37 2019 @@ -24,16 +24,6 @@ namespace clang { namespace clangd { namespace { -llvm::Optional<Path> uriToAbsolutePath(llvm::StringRef URI, PathRef HintPath) { - auto U = URI::parse(URI); - if (!U) - return llvm::None; - auto AbsolutePath = URI::resolve(*U, HintPath); - if (!AbsolutePath) - return llvm::None; - return *AbsolutePath; -} - /// A helper class to cache BackgroundIndexStorage operations and keep the /// inverse dependency mapping. class BackgroundIndexLoader { @@ -79,9 +69,11 @@ BackgroundIndexLoader::loadShard(PathRef LS.Shard = std::move(Shard); for (const auto &It : *LS.Shard->Sources) { - auto AbsPath = uriToAbsolutePath(It.getKey(), StartSourceFile); - if (!AbsPath) + auto AbsPath = URI::resolve(It.getKey(), StartSourceFile); + if (!AbsPath) { + elog("Failed to resolve URI: {0}", AbsPath.takeError()); continue; + } // A shard contains only edges for non main-file sources. if (*AbsPath != StartSourceFile) { Edges.push_back(*AbsPath); _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits