summaryrefslogtreecommitdiffstats
path: root/clang-tools-extra/clangd/FindSymbols.cpp
diff options
context:
space:
mode:
authorKadir Cetinkaya <kadircet@google.com>2019-03-19 09:27:04 +0000
committerKadir Cetinkaya <kadircet@google.com>2019-03-19 09:27:04 +0000
commit8665802202689b4014bde7f5aa64f0a3c1a045f7 (patch)
tree4d71078bd62a9c906c00b6b182c410fd2d4de8f7 /clang-tools-extra/clangd/FindSymbols.cpp
parentad78768d5933bfa50009e8b6f84150291a8aba8f (diff)
downloadbcm5719-llvm-8665802202689b4014bde7f5aa64f0a3c1a045f7.tar.gz
bcm5719-llvm-8665802202689b4014bde7f5aa64f0a3c1a045f7.zip
[clangd] Add support for type hierarchy (super types only for now)
Summary: Patch by Nathan Ridge(@nridge)! This is an LSP extension proposed here: https://github.com/Microsoft/vscode-languageserver-node/pull/426 An example client implementation can be found here: https://github.com/theia-ide/theia/pull/3802 Reviewers: kadircet, sammccall Reviewed By: kadircet Subscribers: jdoerfert, sammccall, cfe-commits, mgorny, dschaefer, simark, ilya-biryukov, ioeric, MaskRay, jkorous, arphaman, kadircet Tags: #clang Differential Revision: https://reviews.llvm.org/D56370 llvm-svn: 356445
Diffstat (limited to 'clang-tools-extra/clangd/FindSymbols.cpp')
-rw-r--r--clang-tools-extra/clangd/FindSymbols.cpp61
1 files changed, 1 insertions, 60 deletions
diff --git a/clang-tools-extra/clangd/FindSymbols.cpp b/clang-tools-extra/clangd/FindSymbols.cpp
index 008195502ce..76874e4ecaa 100644
--- a/clang-tools-extra/clangd/FindSymbols.cpp
+++ b/clang-tools-extra/clangd/FindSymbols.cpp
@@ -26,67 +26,8 @@
namespace clang {
namespace clangd {
-namespace {
-
-// Convert a index::SymbolKind to clangd::SymbolKind (LSP)
-// Note, some are not perfect matches and should be improved when this LSP
-// issue is addressed:
-// https://github.com/Microsoft/language-server-protocol/issues/344
-SymbolKind indexSymbolKindToSymbolKind(index::SymbolKind Kind) {
- switch (Kind) {
- case index::SymbolKind::Unknown:
- return SymbolKind::Variable;
- case index::SymbolKind::Module:
- return SymbolKind::Module;
- case index::SymbolKind::Namespace:
- return SymbolKind::Namespace;
- case index::SymbolKind::NamespaceAlias:
- return SymbolKind::Namespace;
- case index::SymbolKind::Macro:
- return SymbolKind::String;
- case index::SymbolKind::Enum:
- return SymbolKind::Enum;
- case index::SymbolKind::Struct:
- return SymbolKind::Struct;
- case index::SymbolKind::Class:
- return SymbolKind::Class;
- case index::SymbolKind::Protocol:
- return SymbolKind::Interface;
- case index::SymbolKind::Extension:
- return SymbolKind::Interface;
- case index::SymbolKind::Union:
- return SymbolKind::Class;
- case index::SymbolKind::TypeAlias:
- return SymbolKind::Class;
- case index::SymbolKind::Function:
- return SymbolKind::Function;
- case index::SymbolKind::Variable:
- return SymbolKind::Variable;
- case index::SymbolKind::Field:
- return SymbolKind::Field;
- case index::SymbolKind::EnumConstant:
- return SymbolKind::EnumMember;
- case index::SymbolKind::InstanceMethod:
- case index::SymbolKind::ClassMethod:
- case index::SymbolKind::StaticMethod:
- return SymbolKind::Method;
- case index::SymbolKind::InstanceProperty:
- case index::SymbolKind::ClassProperty:
- case index::SymbolKind::StaticProperty:
- return SymbolKind::Property;
- case index::SymbolKind::Constructor:
- case index::SymbolKind::Destructor:
- return SymbolKind::Method;
- case index::SymbolKind::ConversionFunction:
- return SymbolKind::Function;
- case index::SymbolKind::Parameter:
- return SymbolKind::Variable;
- case index::SymbolKind::Using:
- return SymbolKind::Namespace;
- }
- llvm_unreachable("invalid symbol kind");
-}
+namespace {
using ScoredSymbolInfo = std::pair<float, SymbolInformation>;
struct ScoredSymbolGreater {
bool operator()(const ScoredSymbolInfo &L, const ScoredSymbolInfo &R) {
OpenPOWER on IntegriCloud