diff options
author | Kadir Cetinkaya <kadircet@google.com> | 2020-01-24 13:04:00 +0100 |
---|---|---|
committer | Kadir Cetinkaya <kadircet@google.com> | 2020-01-28 11:26:32 +0100 |
commit | 6472fec9a6998a2efd61137f90ace9f4c9dc76f1 (patch) | |
tree | f9636214975c0eeddbbd8cbc14a39d1102557918 /clang-tools-extra/clangd/unittests/HoverTests.cpp | |
parent | 87c7863c3ec4b66944bfcf39efd666de417f28b8 (diff) | |
download | bcm5719-llvm-6472fec9a6998a2efd61137f90ace9f4c9dc76f1.tar.gz bcm5719-llvm-6472fec9a6998a2efd61137f90ace9f4c9dc76f1.zip |
[clangd][Hover] Handle uninstantiated templates
Summary: Fixes https://github.com/clangd/clangd/issues/263
Reviewers: hokein, sammccall
Subscribers: ilya-biryukov, MaskRay, jkorous, arphaman, usaxena95, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D73344
(cherry picked from commit a31a61dafeaa9110687110fc127ea6f7c91dd3e6)
Diffstat (limited to 'clang-tools-extra/clangd/unittests/HoverTests.cpp')
-rw-r--r-- | clang-tools-extra/clangd/unittests/HoverTests.cpp | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/clang-tools-extra/clangd/unittests/HoverTests.cpp b/clang-tools-extra/clangd/unittests/HoverTests.cpp index acbfc827b2a..04b9415c687 100644 --- a/clang-tools-extra/clangd/unittests/HoverTests.cpp +++ b/clang-tools-extra/clangd/unittests/HoverTests.cpp @@ -554,6 +554,25 @@ class Foo {})cpp"; HI.Name = "Foo<X>"; HI.Kind = index::SymbolKind::Class; }}, + {// Falls back to primary template, when the type is not instantiated. + R"cpp( + // comment from primary + template <typename T> class Foo {}; + // comment from specialization + template <typename T> class Foo<T*> {}; + void foo() { + [[Fo^o]]<int*> *x = nullptr; + } + )cpp", + [](HoverInfo &HI) { + HI.Name = "Foo<int *>"; + HI.Kind = index::SymbolKind::Class; + HI.NamespaceScope = ""; + HI.Definition = "template <> class Foo<int *>"; + // FIXME: Maybe force instantiation to make use of real template + // pattern. + HI.Documentation = "comment from primary"; + }}, }; for (const auto &Case : Cases) { SCOPED_TRACE(Case.Code); |