Author: ibiryukov Date: Sat Apr 14 09:27:35 2018 New Revision: 330087 URL: http://llvm.org/viewvc/llvm-project?rev=330087&view=rev Log: [clangd] Fix label and snippet for funcs in the index
This is a follow-up to r330004 to fix functions with required template args, e.g. std::make_shared. Modified: clang-tools-extra/trunk/clangd/index/SymbolCollector.cpp clang-tools-extra/trunk/unittests/clangd/FileIndexTests.cpp Modified: clang-tools-extra/trunk/clangd/index/SymbolCollector.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clangd/index/SymbolCollector.cpp?rev=330087&r1=330086&r2=330087&view=diff ============================================================================== --- clang-tools-extra/trunk/clangd/index/SymbolCollector.cpp (original) +++ clang-tools-extra/trunk/clangd/index/SymbolCollector.cpp Sat Apr 14 09:27:35 2018 @@ -27,16 +27,11 @@ namespace clang { namespace clangd { namespace { -/// If \p ND is a template specialization, returns the primary template. +/// If \p ND is a template specialization, returns the described template. /// Otherwise, returns \p ND. const NamedDecl &getTemplateOrThis(const NamedDecl &ND) { - if (auto Cls = dyn_cast<CXXRecordDecl>(&ND)) { - if (auto T = Cls->getDescribedTemplate()) - return *T; - } else if (auto Func = dyn_cast<FunctionDecl>(&ND)) { - if (auto T = Func->getPrimaryTemplate()) - return *T; - } + if (auto T = ND.getDescribedTemplate()) + return *T; return ND; } Modified: clang-tools-extra/trunk/unittests/clangd/FileIndexTests.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/unittests/clangd/FileIndexTests.cpp?rev=330087&r1=330086&r2=330087&view=diff ============================================================================== --- clang-tools-extra/trunk/unittests/clangd/FileIndexTests.cpp (original) +++ clang-tools-extra/trunk/unittests/clangd/FileIndexTests.cpp Sat Apr 14 09:27:35 2018 @@ -201,8 +201,8 @@ template <class Ty> class vector { }; -template <class Ty> -vector<Ty> make_vector(Ty* begin, Ty* end) {} +template <class Ty, class Arg> +vector<Ty> make_vector(Arg A) {} )cpp"; FileIndex M; @@ -222,9 +222,9 @@ vector<Ty> make_vector(Ty* begin, Ty* en } if (Sym.Name == "make_vector") { - EXPECT_EQ(Sym.CompletionLabel, "make_vector(Ty *begin, Ty *end)"); + EXPECT_EQ(Sym.CompletionLabel, "make_vector<class Ty>(Arg A)"); EXPECT_EQ(Sym.CompletionSnippetInsertText, - "make_vector(${1:Ty *begin}, ${2:Ty *end})"); + "make_vector<${1:class Ty}>(${2:Arg A})"); EXPECT_EQ(Sym.CompletionPlainInsertText, "make_vector"); SeenMakeVector = true; } _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits