зеркало из https://github.com/microsoft/clang-1.git
[libclang] For a reference of an implicit template instantiation just give
a reference for the instantiation decl. Also test that its location is correct after previous commit. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150291 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Родитель
734bd6e25c
Коммит
b70a3bad9c
|
@ -43,6 +43,17 @@ using namespace NS;
|
|||
using namespace NS::Inn;
|
||||
using NS::Foo;
|
||||
|
||||
template <typename T1, typename T2>
|
||||
struct TS { };
|
||||
|
||||
template <typename T>
|
||||
struct TS<T, int> {
|
||||
typedef int MyInt;
|
||||
};
|
||||
|
||||
void foo3() {
|
||||
TS<int, int> s;
|
||||
}
|
||||
|
||||
// RUN: c-index-test -index-file %s | FileCheck %s
|
||||
// CHECK: [indexDeclaration]: kind: namespace | name: NS
|
||||
|
@ -74,3 +85,11 @@ using NS::Foo;
|
|||
// CHECK-NEXT: [indexEntityReference]: kind: namespace | name: Inn | {{.*}} | loc: 43:21
|
||||
// CHECK-NEXT: [indexEntityReference]: kind: namespace | name: NS | {{.*}} | loc: 44:7
|
||||
// CHECK-NEXT: [indexEntityReference]: kind: typedef | name: Foo | {{.*}} | loc: 44:11
|
||||
|
||||
// CHECK: [indexDeclaration]: kind: c++-class-template | name: TS | {{.*}} | loc: 47:8
|
||||
// CHECK-NEXT: [indexDeclaration]: kind: struct-template-partial-spec | name: TS | USR: c:@SP>1#T@TS>#t0.0#I | {{.*}} | loc: 50:8
|
||||
// CHECK-NEXT: [indexDeclaration]: kind: typedef | name: MyInt | USR: c:index-refs.cpp@593@SP>1#T@TS>#t0.0#I@T@MyInt | {{.*}} | loc: 51:15 | semantic-container: [TS:50:8] | lexical-container: [TS:50:8]
|
||||
// CHECK-NEXT: [indexDeclaration]: kind: struct-template-spec | name: TS | USR: c:@S@TS>#I | {{.*}} | loc: 50:8
|
||||
// CHECK-NEXT: [indexDeclaration]: kind: typedef | name: MyInt | USR: c:index-refs.cpp@593@S@TS>#I@T@MyInt | {{.*}} | loc: 51:15 | semantic-container: [TS:50:8] | lexical-container: [TS:50:8]
|
||||
// CHECK-NEXT: [indexDeclaration]: kind: function | name: foo3
|
||||
// CHECK-NEXT: [indexEntityReference]: kind: struct-template-spec | name: TS | USR: c:@S@TS>#I | {{.*}} | loc: 55:3
|
||||
|
|
|
@ -73,9 +73,6 @@ public:
|
|||
|
||||
bool VisitTemplateSpecializationTypeLoc(TemplateSpecializationTypeLoc TL) {
|
||||
if (const TemplateSpecializationType *T = TL.getTypePtr()) {
|
||||
if (const TemplateDecl *D = T->getTemplateName().getAsTemplateDecl())
|
||||
IndexCtx.handleReference(D, TL.getTemplateNameLoc(),
|
||||
Parent, ParentDC);
|
||||
if (CXXRecordDecl *RD = T->getAsCXXRecordDecl())
|
||||
IndexCtx.handleReference(RD, TL.getTemplateNameLoc(),
|
||||
Parent, ParentDC);
|
||||
|
|
Загрузка…
Ссылка в новой задаче