[clang-tools-extra] [clangd] Consolidate two functions converting index to LSP locations (PR #117885)
Christian Kandeler via cfe-commits
cfe-commits at lists.llvm.org
Wed Nov 27 06:13:08 PST 2024
https://github.com/ckandeler created https://github.com/llvm/llvm-project/pull/117885
None
>From 7aa28a386a84c4fa8e7e8aa13822fd3e058b076c Mon Sep 17 00:00:00 2001
From: Christian Kandeler <christian.kandeler at qt.io>
Date: Wed, 27 Nov 2024 14:55:18 +0100
Subject: [PATCH] [clangd] Consolidate two functions converting index to LSP
locations
---
clang-tools-extra/clangd/XRefs.cpp | 22 ++++------------------
1 file changed, 4 insertions(+), 18 deletions(-)
diff --git a/clang-tools-extra/clangd/XRefs.cpp b/clang-tools-extra/clangd/XRefs.cpp
index 61fa66180376cd..f1e701f1ad0210 100644
--- a/clang-tools-extra/clangd/XRefs.cpp
+++ b/clang-tools-extra/clangd/XRefs.cpp
@@ -121,31 +121,17 @@ void logIfOverflow(const SymbolLocation &Loc) {
// Convert a SymbolLocation to LSP's Location.
// TUPath is used to resolve the path of URI.
-// FIXME: figure out a good home for it, and share the implementation with
-// FindSymbols.
std::optional<Location> toLSPLocation(const SymbolLocation &Loc,
llvm::StringRef TUPath) {
if (!Loc)
return std::nullopt;
- auto Uri = URI::parse(Loc.FileURI);
- if (!Uri) {
- elog("Could not parse URI {0}: {1}", Loc.FileURI, Uri.takeError());
+ auto LSPLoc = indexToLSPLocation(Loc, TUPath);
+ if (!LSPLoc) {
+ elog("{0}", LSPLoc.takeError());
return std::nullopt;
}
- auto U = URIForFile::fromURI(*Uri, TUPath);
- if (!U) {
- elog("Could not resolve URI {0}: {1}", Loc.FileURI, U.takeError());
- return std::nullopt;
- }
-
- Location LSPLoc;
- LSPLoc.uri = std::move(*U);
- LSPLoc.range.start.line = Loc.Start.line();
- LSPLoc.range.start.character = Loc.Start.column();
- LSPLoc.range.end.line = Loc.End.line();
- LSPLoc.range.end.character = Loc.End.column();
logIfOverflow(Loc);
- return LSPLoc;
+ return *LSPLoc;
}
SymbolLocation toIndexLocation(const Location &Loc, std::string &URIStorage) {
More information about the cfe-commits
mailing list