Index: clang-tools-extra/trunk/clangd/AST.cpp =================================================================== --- clang-tools-extra/trunk/clangd/AST.cpp +++ clang-tools-extra/trunk/clangd/AST.cpp @@ -36,6 +36,10 @@ llvm::dyn_cast(&ND)) { if (auto *Args = Cls->getTemplateArgsAsWritten()) return Args->arguments(); + } else if (auto *Var = + llvm::dyn_cast(&ND)) { + if (auto *Args = Var->getTemplateArgsAsWritten()) + return Args->arguments(); } else if (auto *Var = llvm::dyn_cast(&ND)) return Var->getTemplateArgsInfo().arguments(); // We return None for ClassTemplateSpecializationDecls because it does not Index: clang-tools-extra/trunk/clangd/unittests/ClangdUnitTests.cpp =================================================================== --- clang-tools-extra/trunk/clangd/unittests/ClangdUnitTests.cpp +++ clang-tools-extra/trunk/clangd/unittests/ClangdUnitTests.cpp @@ -188,7 +188,7 @@ AllOf(DeclNamed("foo"), WithTemplateArgs("")), AllOf(DeclNamed("i"), WithTemplateArgs("")), AllOf(DeclNamed("d"), WithTemplateArgs("")), - AllOf(DeclNamed("foo"), WithTemplateArgs("<>")), + AllOf(DeclNamed("foo"), WithTemplateArgs("")), AllOf(DeclNamed("foo"), WithTemplateArgs(""))})); } Index: clang-tools-extra/trunk/clangd/unittests/PrintASTTests.cpp =================================================================== --- clang-tools-extra/trunk/clangd/unittests/PrintASTTests.cpp +++ clang-tools-extra/trunk/clangd/unittests/PrintASTTests.cpp @@ -95,6 +95,15 @@ struct Bar { friend class Foo; }; template <> struct ^Foo {};)cpp", {""}}, + { + R"cpp( + template + T S = T(10); + template + int ^S = 0; + template <> + int ^S = 0;)cpp", + {"", ""}}, })),); } // namespace } // namespace clangd