forked from OSchip/llvm-project
[clangd] Print type for VarTemplateDecl in hover.
Print type for VarTemplateDecl in hover. Reviewed By: sammccall Differential Revision: https://reviews.llvm.org/D115108
This commit is contained in:
parent
630c847b1b
commit
51dc466642
|
@ -594,6 +594,8 @@ HoverInfo getHoverContents(const NamedDecl *D, const PrintingPolicy &PP,
|
|||
HI.Type = TTP->wasDeclaredWithTypename() ? "typename" : "class";
|
||||
else if (const auto *TTP = dyn_cast<TemplateTemplateParmDecl>(D))
|
||||
HI.Type = printType(TTP, PP);
|
||||
else if (const auto *VT = dyn_cast<VarTemplateDecl>(D))
|
||||
HI.Type = printType(VT->getTemplatedDecl()->getType(), PP);
|
||||
|
||||
// Fill in value with evaluated initializer if possible.
|
||||
if (const auto *Var = dyn_cast<VarDecl>(D)) {
|
||||
|
|
|
@ -901,6 +901,35 @@ class Foo {})cpp";
|
|||
HI.Kind = index::SymbolKind::Unknown;
|
||||
HI.Type = "int[10]";
|
||||
HI.Value = "{1}";
|
||||
}},
|
||||
{// Var template decl
|
||||
R"cpp(
|
||||
using m_int = int;
|
||||
|
||||
template <int Size> m_int ^[[arr]][Size];
|
||||
)cpp",
|
||||
[](HoverInfo &HI) {
|
||||
HI.Name = "arr";
|
||||
HI.Kind = index::SymbolKind::Variable;
|
||||
HI.Type = "m_int[Size]";
|
||||
HI.NamespaceScope = "";
|
||||
HI.Definition = "template <int Size> m_int arr[Size]";
|
||||
HI.TemplateParameters = {{{"int"}, {"Size"}, llvm::None}};
|
||||
}},
|
||||
{// Var template decl specialization
|
||||
R"cpp(
|
||||
using m_int = int;
|
||||
|
||||
template <int Size> m_int arr[Size];
|
||||
|
||||
template <> m_int ^[[arr]]<4>[4];
|
||||
)cpp",
|
||||
[](HoverInfo &HI) {
|
||||
HI.Name = "arr<4>";
|
||||
HI.Kind = index::SymbolKind::Variable;
|
||||
HI.Type = "m_int[4]";
|
||||
HI.NamespaceScope = "";
|
||||
HI.Definition = "m_int arr[4]";
|
||||
}}};
|
||||
for (const auto &Case : Cases) {
|
||||
SCOPED_TRACE(Case.Code);
|
||||
|
|
Loading…
Reference in New Issue