forked from OSchip/llvm-project
[clangd] Call hierarchy (ClangdServer layer)
Differential Revision: https://reviews.llvm.org/D91123
This commit is contained in:
parent
3e6e6a2db6
commit
4cb976e014
|
@ -678,6 +678,26 @@ void ClangdServer::resolveTypeHierarchy(
|
|||
CB(Item);
|
||||
}
|
||||
|
||||
void ClangdServer::prepareCallHierarchy(
|
||||
PathRef File, Position Pos, Callback<std::vector<CallHierarchyItem>> CB) {
|
||||
auto Action = [File = File.str(), Pos,
|
||||
CB = std::move(CB)](Expected<InputsAndAST> InpAST) mutable {
|
||||
if (!InpAST)
|
||||
return CB(InpAST.takeError());
|
||||
CB(clangd::prepareCallHierarchy(InpAST->AST, Pos, File));
|
||||
};
|
||||
WorkScheduler.runWithAST("Call Hierarchy", File, std::move(Action));
|
||||
}
|
||||
|
||||
void ClangdServer::incomingCalls(
|
||||
const CallHierarchyItem &Item,
|
||||
Callback<std::vector<CallHierarchyIncomingCall>> CB) {
|
||||
WorkScheduler.run("Incoming Calls", "",
|
||||
[CB = std::move(CB), Item, this]() mutable {
|
||||
CB(clangd::incomingCalls(Item, Index));
|
||||
});
|
||||
}
|
||||
|
||||
void ClangdServer::onFileEvent(const DidChangeWatchedFilesParams &Params) {
|
||||
// FIXME: Do nothing for now. This will be used for indexing and potentially
|
||||
// invalidating other caches.
|
||||
|
|
|
@ -242,6 +242,14 @@ public:
|
|||
TypeHierarchyDirection Direction,
|
||||
Callback<llvm::Optional<TypeHierarchyItem>> CB);
|
||||
|
||||
/// Get information about call hierarchy for a given position.
|
||||
void prepareCallHierarchy(PathRef File, Position Pos,
|
||||
Callback<std::vector<CallHierarchyItem>> CB);
|
||||
|
||||
/// Resolve incoming calls for a given call hierarchy item.
|
||||
void incomingCalls(const CallHierarchyItem &Item,
|
||||
Callback<std::vector<CallHierarchyIncomingCall>>);
|
||||
|
||||
/// Retrieve the top symbols from the workspace matching a query.
|
||||
void workspaceSymbols(StringRef Query, int Limit,
|
||||
Callback<std::vector<SymbolInformation>> CB);
|
||||
|
|
Loading…
Reference in New Issue