kadircet updated this revision to Diff 232519. kadircet marked an inline comment as done. kadircet added a comment.
- Address comments Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D70723/new/ https://reviews.llvm.org/D70723 Files: clang-tools-extra/clangd/Hover.cpp clang-tools-extra/clangd/Hover.h clang-tools-extra/clangd/unittests/HoverTests.cpp
Index: clang-tools-extra/clangd/unittests/HoverTests.cpp =================================================================== --- clang-tools-extra/clangd/unittests/HoverTests.cpp +++ clang-tools-extra/clangd/unittests/HoverTests.cpp @@ -32,7 +32,7 @@ [](HoverInfo &HI) { HI.NamespaceScope = ""; HI.Name = "foo"; - HI.Kind = SymbolKind::Function; + HI.Kind = index::SymbolKind::Function; HI.Documentation = "Best foo ever."; HI.Definition = "void foo()"; HI.ReturnType = "void"; @@ -49,7 +49,7 @@ [](HoverInfo &HI) { HI.NamespaceScope = "ns1::ns2::"; HI.Name = "foo"; - HI.Kind = SymbolKind::Function; + HI.Kind = index::SymbolKind::Function; HI.Documentation = "Best foo ever."; HI.Definition = "void foo()"; HI.ReturnType = "void"; @@ -68,7 +68,7 @@ HI.NamespaceScope = "ns1::ns2::"; HI.LocalScope = "Foo::"; HI.Name = "bar"; - HI.Kind = SymbolKind::Field; + HI.Kind = index::SymbolKind::Field; HI.Definition = "int bar"; HI.Type = "int"; }}, @@ -86,7 +86,7 @@ HI.NamespaceScope = "ns1::ns2::"; HI.LocalScope = "Foo::foo::"; HI.Name = "bar"; - HI.Kind = SymbolKind::Variable; + HI.Kind = index::SymbolKind::Variable; HI.Definition = "int bar"; HI.Type = "int"; }}, @@ -102,7 +102,7 @@ HI.NamespaceScope = "ns1::(anonymous)::"; HI.LocalScope = "(anonymous struct)::"; HI.Name = "bar"; - HI.Kind = SymbolKind::Field; + HI.Kind = index::SymbolKind::Field; HI.Definition = "int bar"; HI.Type = "int"; }}, @@ -114,7 +114,7 @@ [](HoverInfo &HI) { HI.NamespaceScope = ""; HI.Name = "foo"; - HI.Kind = SymbolKind::Variable; + HI.Kind = index::SymbolKind::Variable; HI.Definition = "Foo<int, char, bool> foo = Foo<int, char, bool>(5)"; HI.Type = "Foo<int, char, bool>"; }}, @@ -126,7 +126,7 @@ [](HoverInfo &HI) { HI.NamespaceScope = ""; HI.Name = "vector"; - HI.Kind = SymbolKind::Class; + HI.Kind = index::SymbolKind::Class; HI.Definition = "template <typename T> class vector {}"; HI.TemplateParameters = { {std::string("typename"), std::string("T"), llvm::None}, @@ -145,7 +145,7 @@ [](HoverInfo &HI) { HI.NamespaceScope = ""; HI.Name = "Foo"; - HI.Kind = SymbolKind::Class; + HI.Kind = index::SymbolKind::Class; HI.Definition = R"cpp(template <template <typename, bool...> class C, typename = char, int = 0, bool Q = false, class... Ts> @@ -175,7 +175,7 @@ [](HoverInfo &HI) { HI.NamespaceScope = ""; HI.Name = "foo"; - HI.Kind = SymbolKind::Function; + HI.Kind = index::SymbolKind::Function; HI.Definition = R"cpp(template <template <typename, bool...> class C, typename = char, int = 0, bool Q = false, class... Ts> @@ -204,7 +204,7 @@ [](HoverInfo &HI) { HI.NamespaceScope = ""; HI.Name = "foo"; - HI.Kind = SymbolKind::Function; + HI.Kind = index::SymbolKind::Function; HI.Definition = "Foo<bool, true, false> foo(int, bool T = false)"; HI.ReturnType = "Foo<bool, true, false>"; HI.Type = "Foo<bool, true, false> (int, bool)"; @@ -225,7 +225,7 @@ HI.NamespaceScope = ""; HI.LocalScope = "foo::"; HI.Name = "c"; - HI.Kind = SymbolKind::Variable; + HI.Kind = index::SymbolKind::Variable; HI.Definition = "auto *c = &b"; HI.Type = "class (lambda) **"; HI.ReturnType = "bool"; @@ -246,7 +246,7 @@ HI.NamespaceScope = ""; HI.LocalScope = "foo::"; HI.Name = "bar"; - HI.Kind = SymbolKind::Variable; + HI.Kind = index::SymbolKind::Parameter; HI.Definition = "decltype(lamb) &bar"; HI.Type = "decltype(lamb) &"; HI.ReturnType = "bool"; @@ -267,7 +267,7 @@ HI.NamespaceScope = ""; HI.LocalScope = "foo::"; HI.Name = "bar"; - HI.Kind = SymbolKind::Variable; + HI.Kind = index::SymbolKind::Parameter; HI.Definition = "decltype(lamb) bar"; HI.Type = "class (lambda)"; HI.ReturnType = "bool"; @@ -290,7 +290,7 @@ HI.NamespaceScope = ""; HI.LocalScope = "foo::"; HI.Name = "lamb"; - HI.Kind = SymbolKind::Variable; + HI.Kind = index::SymbolKind::Variable; HI.Definition = "auto lamb = [&bar](int T, bool B) -> bool {}"; HI.Type = "class (lambda)"; HI.ReturnType = "bool"; @@ -310,7 +310,7 @@ HI.NamespaceScope = ""; HI.LocalScope = "foo::(anonymous class)::operator()::"; HI.Name = "test"; - HI.Kind = SymbolKind::Variable; + HI.Kind = index::SymbolKind::Variable; HI.Definition = "int test"; HI.Type = "int"; }}, @@ -322,7 +322,7 @@ [](HoverInfo &HI) { HI.Name = "X<T *>"; HI.NamespaceScope = ""; - HI.Kind = SymbolKind::Class; + HI.Kind = index::SymbolKind::Class; HI.Definition = "template <typename T> class X<T *> {}"; }}, // Constructor of partially-specialized class template @@ -334,7 +334,7 @@ HI.NamespaceScope = ""; HI.Name = "X"; HI.LocalScope = "X<T *>::"; // FIXME: X<T *, void>:: - HI.Kind = SymbolKind::Constructor; + HI.Kind = index::SymbolKind::Constructor; HI.ReturnType = "X<T *>"; HI.Definition = "X()"; HI.Parameters.emplace(); @@ -344,7 +344,7 @@ HI.NamespaceScope = ""; HI.Name = "~X"; HI.LocalScope = "X::"; - HI.Kind = SymbolKind::Constructor; + HI.Kind = index::SymbolKind::Destructor; HI.ReturnType = "void"; HI.Definition = "~X()"; HI.Parameters.emplace(); @@ -358,7 +358,7 @@ )cpp", [](HoverInfo &HI) { HI.Name = "class (lambda)"; - HI.Kind = SymbolKind::Class; + HI.Kind = index::SymbolKind::Class; }}, // auto on template instantiation {R"cpp( @@ -369,7 +369,7 @@ )cpp", [](HoverInfo &HI) { HI.Name = "class Foo<int>"; - HI.Kind = SymbolKind::Class; + HI.Kind = index::SymbolKind::Class; }}, // auto on specialized template {R"cpp( @@ -381,7 +381,7 @@ )cpp", [](HoverInfo &HI) { HI.Name = "class Foo<int>"; - HI.Kind = SymbolKind::Class; + HI.Kind = index::SymbolKind::Class; }}, // macro @@ -391,7 +391,7 @@ [[MAC^RO]](int, double d, bool z = false); )cpp", [](HoverInfo &HI) { - HI.Name = "MACRO", HI.Kind = SymbolKind::String, + HI.Name = "MACRO", HI.Kind = index::SymbolKind::Macro, HI.Definition = "#define MACRO(x, y, z) void foo(x, y, z);"; }}, @@ -403,7 +403,7 @@ [](HoverInfo &HI) { HI.Name = "bar"; HI.Definition = "int bar = add(1, 2)"; - HI.Kind = SymbolKind::Variable; + HI.Kind = index::SymbolKind::Variable; HI.Type = "int"; HI.NamespaceScope = ""; HI.Value = "3"; @@ -414,7 +414,7 @@ [](HoverInfo &HI) { HI.Name = "bar"; HI.Definition = "int bar = sizeof(char)"; - HI.Kind = SymbolKind::Variable; + HI.Kind = index::SymbolKind::Variable; HI.Type = "int"; HI.NamespaceScope = ""; HI.Value = "1"; @@ -428,7 +428,7 @@ [](HoverInfo &HI) { HI.Name = "bar"; HI.Definition = "int bar = Add<1, 2>::result"; - HI.Kind = SymbolKind::Variable; + HI.Kind = index::SymbolKind::Variable; HI.Type = "int"; HI.NamespaceScope = ""; HI.Value = "3"; @@ -442,7 +442,7 @@ HI.NamespaceScope = ""; HI.LocalScope = "Color::"; HI.Definition = "GREEN"; - HI.Kind = SymbolKind::EnumMember; + HI.Kind = index::SymbolKind::EnumConstant; HI.Type = "enum Color"; HI.Value = "1"; // Numeric when hovering on the enumerator name. }}, @@ -455,7 +455,7 @@ HI.Name = "x"; HI.NamespaceScope = ""; HI.Definition = "enum Color x = GREEN"; - HI.Kind = SymbolKind::Variable; + HI.Kind = index::SymbolKind::Variable; HI.Type = "enum Color"; HI.Value = "GREEN (1)"; // Symbolic when hovering on an expression. }}, @@ -470,7 +470,7 @@ [](HoverInfo &HI) { HI.Name = "result"; HI.Definition = "static constexpr int result = a + b"; - HI.Kind = SymbolKind::Property; + HI.Kind = index::SymbolKind::StaticProperty; HI.Type = "const int"; HI.NamespaceScope = ""; HI.LocalScope = "Add<a, b>::"; @@ -483,7 +483,7 @@ [](HoverInfo &HI) { HI.Name = "answer"; HI.Definition = "constexpr int answer()"; - HI.Kind = SymbolKind::Function; + HI.Kind = index::SymbolKind::Function; HI.Type = "int ()"; HI.ReturnType = "int"; HI.Parameters.emplace(); @@ -496,7 +496,7 @@ [](HoverInfo &HI) { HI.Name = "bar"; HI.Definition = "const char *bar = \"1234\""; - HI.Kind = SymbolKind::Variable; + HI.Kind = index::SymbolKind::Variable; HI.Type = "const char *"; HI.NamespaceScope = ""; HI.Value = "&\"1234\"[0]"; Index: clang-tools-extra/clangd/Hover.h =================================================================== --- clang-tools-extra/clangd/Hover.h +++ clang-tools-extra/clangd/Hover.h @@ -28,7 +28,7 @@ /// - template <ParamType Name = DefaultType> class Foo {}; struct Param { /// The pretty-printed parameter type, e.g. "int", or "typename" (in - /// TemplateParameters) + /// TemplateParameters), might be None for macro parameters. llvm::Optional<std::string> Type; /// None for unnamed parameters. llvm::Optional<std::string> Name; @@ -53,9 +53,7 @@ /// Name of the symbol, does not contain any "::". std::string Name; llvm::Optional<Range> SymRange; - /// Scope containing the symbol. e.g, "global namespace", "function x::Y" - /// - None for deduced types, e.g "auto", "decltype" keywords. - SymbolKind Kind; + index::SymbolKind Kind; std::string Documentation; /// Source code containing the definition of the symbol. std::string Definition; Index: clang-tools-extra/clangd/Hover.cpp =================================================================== --- clang-tools-extra/clangd/Hover.cpp +++ clang-tools-extra/clangd/Hover.cpp @@ -20,6 +20,8 @@ #include "clang/AST/ASTTypeTraits.h" #include "clang/AST/DeclTemplate.h" #include "clang/AST/PrettyPrinter.h" +#include "clang/Index/IndexSymbol.h" +#include "llvm/Support/raw_ostream.h" namespace clang { namespace clangd { @@ -298,7 +300,7 @@ HI.Name = printName(Ctx, *ND); } - HI.Kind = indexSymbolKindToSymbolKind(index::getSymbolInfo(D).Kind); + HI.Kind = index::getSymbolInfo(D).Kind; // Fill in template params. if (const TemplateDecl *TD = D->getDescribedTemplate()) { @@ -347,7 +349,7 @@ OS.flush(); if (D) { - HI.Kind = indexSymbolKindToSymbolKind(index::getSymbolInfo(D).Kind); + HI.Kind = index::getSymbolInfo(D).Kind; enhanceFromIndex(HI, D, Index); } return HI; @@ -358,8 +360,7 @@ HoverInfo HI; SourceManager &SM = AST.getSourceManager(); HI.Name = Macro.Name; - HI.Kind = indexSymbolKindToSymbolKind( - index::getSymbolInfoForMacro(*Macro.Info).Kind); + HI.Kind = index::SymbolKind::Macro; // FIXME: Populate documentation // FIXME: Pupulate parameters
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits