forked from OSchip/llvm-project
[clangd] Handle type template parameters in findExplicitReferences
Reviewers: kadircet Reviewed By: kadircet Subscribers: MaskRay, jkorous, arphaman, usaxena95, cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D68120 llvm-svn: 373067
This commit is contained in:
parent
69f9f20fc5
commit
c383509ce6
|
@ -489,6 +489,11 @@ Optional<ReferenceLoc> refInTypeLoc(TypeLoc L) {
|
|||
ReferenceLoc{NestedNameSpecifierLoc(), L.getNameLoc(), {L.getDecl()}};
|
||||
}
|
||||
|
||||
void VisitTemplateTypeParmTypeLoc(TemplateTypeParmTypeLoc L) {
|
||||
Ref =
|
||||
ReferenceLoc{NestedNameSpecifierLoc(), L.getNameLoc(), {L.getDecl()}};
|
||||
}
|
||||
|
||||
void VisitTemplateSpecializationTypeLoc(TemplateSpecializationTypeLoc L) {
|
||||
Ref = ReferenceLoc{
|
||||
NestedNameSpecifierLoc(), L.getTemplateNameLoc(),
|
||||
|
|
|
@ -706,6 +706,26 @@ TEST_F(FindExplicitReferencesTest, All) {
|
|||
"0: targets = {x}\n"
|
||||
"1: targets = {X::func, X::func}\n"
|
||||
"2: targets = {t}\n"},
|
||||
// Type template parameters.
|
||||
{R"cpp(
|
||||
template <class T>
|
||||
void foo() {
|
||||
static_cast<$0^T>(0);
|
||||
$1^T();
|
||||
$2^T t;
|
||||
}
|
||||
)cpp",
|
||||
"0: targets = {T}\n"
|
||||
"1: targets = {T}\n"
|
||||
"2: targets = {T}\n"},
|
||||
// Non-type template parameters.
|
||||
{R"cpp(
|
||||
template <int I>
|
||||
void foo() {
|
||||
int x = $0^I;
|
||||
}
|
||||
)cpp",
|
||||
"0: targets = {I}\n"},
|
||||
};
|
||||
|
||||
for (const auto &C : Cases) {
|
||||
|
|
Loading…
Reference in New Issue