forked from OSchip/llvm-project
[libclang] Index the field references of a designated initializer, rdar://10906206
llvm-svn: 151118
This commit is contained in:
parent
fd555f6b1f
commit
a1bed4cd96
|
@ -61,6 +61,14 @@ typedef int some_arr[array_size];
|
|||
const int default_param = 3;
|
||||
void foo4(int p = default_param);
|
||||
|
||||
struct S2 {
|
||||
int x,y;
|
||||
};
|
||||
|
||||
void foo5() {
|
||||
struct S2 s = { .y = 1, .x = 4};
|
||||
}
|
||||
|
||||
// RUN: c-index-test -index-file %s | FileCheck %s
|
||||
// CHECK: [indexDeclaration]: kind: namespace | name: NS
|
||||
// CHECK-NEXT: [indexDeclaration]: kind: variable | name: gx
|
||||
|
@ -108,3 +116,6 @@ void foo4(int p = default_param);
|
|||
// CHECK: [indexEntityReference]: kind: variable | name: array_size | {{.*}} | loc: 59:22
|
||||
// CHECK: [indexEntityReference]: kind: variable | name: default_param | {{.*}} | loc: 62:19
|
||||
// CHECK-NOT: [indexEntityReference]: kind: variable | name: default_param | {{.*}} | loc: 62:19
|
||||
|
||||
// CHECK: [indexEntityReference]: kind: field | name: y | {{.*}} | loc: 69:20
|
||||
// CHECK-NEXT: [indexEntityReference]: kind: field | name: x | {{.*}} | loc: 69:28
|
||||
|
|
|
@ -51,6 +51,17 @@ public:
|
|||
return true;
|
||||
}
|
||||
|
||||
bool VisitDesignatedInitExpr(DesignatedInitExpr *E) {
|
||||
for (DesignatedInitExpr::reverse_designators_iterator
|
||||
D = E->designators_rbegin(), DEnd = E->designators_rend();
|
||||
D != DEnd; ++D) {
|
||||
if (D->isFieldDesignator())
|
||||
IndexCtx.handleReference(D->getField(), D->getFieldLoc(),
|
||||
Parent, ParentDC, E);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool VisitObjCIvarRefExpr(ObjCIvarRefExpr *E) {
|
||||
IndexCtx.handleReference(E->getDecl(), E->getLocation(),
|
||||
Parent, ParentDC, E);
|
||||
|
|
Loading…
Reference in New Issue