nridge updated this revision to Diff 305408. nridge marked 2 inline comments as done. nridge added a comment.
Address review comments Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D91123/new/ https://reviews.llvm.org/D91123 Files: clang-tools-extra/clangd/ClangdServer.cpp clang-tools-extra/clangd/ClangdServer.h Index: clang-tools-extra/clangd/ClangdServer.h =================================================================== --- clang-tools-extra/clangd/ClangdServer.h +++ clang-tools-extra/clangd/ClangdServer.h @@ -242,6 +242,16 @@ TypeHierarchyDirection Direction, Callback<llvm::Optional<TypeHierarchyItem>> CB); + /// Get information about call hierarchy for a given position. + void prepareCallHierarchy( + PathRef File, Position Pos, + Callback<llvm::Optional<std::vector<CallHierarchyItem>>> CB); + + /// Resolve incoming calls for a given call hierarchy item. + void incomingCalls( + const CallHierarchyItem &Item, + Callback<llvm::Optional<std::vector<CallHierarchyIncomingCall>>>); + /// Retrieve the top symbols from the workspace matching a query. void workspaceSymbols(StringRef Query, int Limit, Callback<std::vector<SymbolInformation>> CB); Index: clang-tools-extra/clangd/ClangdServer.cpp =================================================================== --- clang-tools-extra/clangd/ClangdServer.cpp +++ clang-tools-extra/clangd/ClangdServer.cpp @@ -677,6 +677,27 @@ CB(Item); } +void ClangdServer::prepareCallHierarchy( + PathRef File, Position Pos, + Callback<llvm::Optional<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<llvm::Optional<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.
Index: clang-tools-extra/clangd/ClangdServer.h =================================================================== --- clang-tools-extra/clangd/ClangdServer.h +++ clang-tools-extra/clangd/ClangdServer.h @@ -242,6 +242,16 @@ TypeHierarchyDirection Direction, Callback<llvm::Optional<TypeHierarchyItem>> CB); + /// Get information about call hierarchy for a given position. + void prepareCallHierarchy( + PathRef File, Position Pos, + Callback<llvm::Optional<std::vector<CallHierarchyItem>>> CB); + + /// Resolve incoming calls for a given call hierarchy item. + void incomingCalls( + const CallHierarchyItem &Item, + Callback<llvm::Optional<std::vector<CallHierarchyIncomingCall>>>); + /// Retrieve the top symbols from the workspace matching a query. void workspaceSymbols(StringRef Query, int Limit, Callback<std::vector<SymbolInformation>> CB); Index: clang-tools-extra/clangd/ClangdServer.cpp =================================================================== --- clang-tools-extra/clangd/ClangdServer.cpp +++ clang-tools-extra/clangd/ClangdServer.cpp @@ -677,6 +677,27 @@ CB(Item); } +void ClangdServer::prepareCallHierarchy( + PathRef File, Position Pos, + Callback<llvm::Optional<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<llvm::Optional<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.
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits