kadircet created this revision.
kadircet added a reviewer: ilya-biryukov.
Herald added subscribers: cfe-commits, usaxena95, arphaman, jkorous, MaskRay.
Herald added a project: clang.
Fixes https://github.com/clangd/clangd/issues/235
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D72085
Files:
clang-tools-extra/clangd/Hover.cpp
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
@@ -1531,7 +1531,11 @@
TEST(Hover, DocsFromAST) {
Annotations T(R"cpp(
// doc
- template <typename T> class X {};
+ template <typename T> class X {
+ public:
+ // doc
+ void foo();
+ };
// doc
template <typename T> void bar() {}
// doc
@@ -1542,6 +1546,7 @@
b^ar<int>();
au^to T = ba^z<X<int>>;
ba^z<int> = 0;
+ X<int>().f^oo();
})cpp");
TestTU TU = TestTU::withCode(T.code());
@@ -1560,15 +1565,28 @@
TEST(Hover, DocsFromMostSpecial) {
Annotations T(R"cpp(
// doc1
- template <typename T> class $doc1^X {};
+ template <typename T> struct $doc1^X {
+ // doc1
+ void foo();
+ };
// doc2
- template <> class $doc2^X<int> {};
+ template <> struct $doc2^X<int> {
+ // doc2
+ void foo();
+ };
// doc3
- template <typename T> class $doc3^X<T*> {};
+ template <typename T> struct $doc3^X<T*> {
+ // doc3
+ void foo();
+ };
void foo() {
X$doc1^<char>();
X$doc2^<int>();
X$doc3^<int*>();
+
+ X<char>().fo$doc1^o();
+ X<int>().fo$doc2^o();
+ X<int*>().fo$doc3^o();
})cpp");
TestTU TU = TestTU::withCode(T.code());
Index: clang-tools-extra/clangd/Hover.cpp
===================================================================
--- clang-tools-extra/clangd/Hover.cpp
+++ clang-tools-extra/clangd/Hover.cpp
@@ -195,7 +195,7 @@
return VTSD->getTemplateInstantiationPattern();
if (auto *FD = D->getAsFunction())
if (FD->isTemplateInstantiation())
- return FD->getTemplateSpecializationInfo()->getTemplate();
+ return FD->getTemplateInstantiationPattern();
return D;
}
Index: clang-tools-extra/clangd/unittests/HoverTests.cpp
===================================================================
--- clang-tools-extra/clangd/unittests/HoverTests.cpp
+++ clang-tools-extra/clangd/unittests/HoverTests.cpp
@@ -1531,7 +1531,11 @@
TEST(Hover, DocsFromAST) {
Annotations T(R"cpp(
// doc
- template <typename T> class X {};
+ template <typename T> class X {
+ public:
+ // doc
+ void foo();
+ };
// doc
template <typename T> void bar() {}
// doc
@@ -1542,6 +1546,7 @@
b^ar<int>();
au^to T = ba^z<X<int>>;
ba^z<int> = 0;
+ X<int>().f^oo();
})cpp");
TestTU TU = TestTU::withCode(T.code());
@@ -1560,15 +1565,28 @@
TEST(Hover, DocsFromMostSpecial) {
Annotations T(R"cpp(
// doc1
- template <typename T> class $doc1^X {};
+ template <typename T> struct $doc1^X {
+ // doc1
+ void foo();
+ };
// doc2
- template <> class $doc2^X<int> {};
+ template <> struct $doc2^X<int> {
+ // doc2
+ void foo();
+ };
// doc3
- template <typename T> class $doc3^X<T*> {};
+ template <typename T> struct $doc3^X<T*> {
+ // doc3
+ void foo();
+ };
void foo() {
X$doc1^<char>();
X$doc2^<int>();
X$doc3^<int*>();
+
+ X<char>().fo$doc1^o();
+ X<int>().fo$doc2^o();
+ X<int*>().fo$doc3^o();
})cpp");
TestTU TU = TestTU::withCode(T.code());
Index: clang-tools-extra/clangd/Hover.cpp
===================================================================
--- clang-tools-extra/clangd/Hover.cpp
+++ clang-tools-extra/clangd/Hover.cpp
@@ -195,7 +195,7 @@
return VTSD->getTemplateInstantiationPattern();
if (auto *FD = D->getAsFunction())
if (FD->isTemplateInstantiation())
- return FD->getTemplateSpecializationInfo()->getTemplate();
+ return FD->getTemplateInstantiationPattern();
return D;
}
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits