summaryrefslogtreecommitdiffstats
path: root/clang-tools-extra/clangd/ClangdServer.cpp
diff options
context:
space:
mode:
authorSam McCall <sam.mccall@gmail.com>2018-09-05 11:53:07 +0000
committerSam McCall <sam.mccall@gmail.com>2018-09-05 11:53:07 +0000
commit1ad142fe260566f9d14e65cb2a48a2123e2edee0 (patch)
tree4ffc1b274dcfac3b331b4f49f0753c531a055f1e /clang-tools-extra/clangd/ClangdServer.cpp
parent837f93af7d907f4ddaed6745eb749d4954c4f962 (diff)
downloadbcm5719-llvm-1ad142fe260566f9d14e65cb2a48a2123e2edee0.tar.gz
bcm5719-llvm-1ad142fe260566f9d14e65cb2a48a2123e2edee0.zip
[clangd] Add xrefs LSP boilerplate implementation.
Reviewers: ilya-biryukov, ioeric Subscribers: MaskRay, jkorous, arphaman, cfe-commits Differential Revision: https://reviews.llvm.org/D50896 llvm-svn: 341462
Diffstat (limited to 'clang-tools-extra/clangd/ClangdServer.cpp')
-rw-r--r--clang-tools-extra/clangd/ClangdServer.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/clang-tools-extra/clangd/ClangdServer.cpp b/clang-tools-extra/clangd/ClangdServer.cpp
index 5bd2a910dff..0a8e748b2f8 100644
--- a/clang-tools-extra/clangd/ClangdServer.cpp
+++ b/clang-tools-extra/clangd/ClangdServer.cpp
@@ -560,6 +560,18 @@ void ClangdServer::documentSymbols(
Bind(Action, std::move(CB)));
}
+void ClangdServer::findReferences(PathRef File, Position Pos,
+ Callback<std::vector<Location>> CB) {
+ auto Action = [Pos, this](Callback<std::vector<Location>> CB,
+ llvm::Expected<InputsAndAST> InpAST) {
+ if (!InpAST)
+ return CB(InpAST.takeError());
+ CB(clangd::findReferences(InpAST->AST, Pos, Index));
+ };
+
+ WorkScheduler.runWithAST("References", File, Bind(Action, std::move(CB)));
+}
+
std::vector<std::pair<Path, std::size_t>>
ClangdServer::getUsedBytesPerFile() const {
return WorkScheduler.getUsedBytesPerFile();
OpenPOWER on IntegriCloud