summaryrefslogtreecommitdiffstats
path: root/clang/tools
diff options
context:
space:
mode:
authorArgyrios Kyrtzidis <akyrtzi@gmail.com>2012-02-22 02:10:41 +0000
committerArgyrios Kyrtzidis <akyrtzi@gmail.com>2012-02-22 02:10:41 +0000
commita1bed4cd96141eb92e94acd56d02167ec007626e (patch)
tree83de603fe9fa0e6b07d3786c92ecbf2abad6023b /clang/tools
parentfd555f6b1fd950eff620e74da887dc37d919a276 (diff)
downloadbcm5719-llvm-a1bed4cd96141eb92e94acd56d02167ec007626e.tar.gz
bcm5719-llvm-a1bed4cd96141eb92e94acd56d02167ec007626e.zip
[libclang] Index the field references of a designated initializer, rdar://10906206
llvm-svn: 151118
Diffstat (limited to 'clang/tools')
-rw-r--r--clang/tools/libclang/IndexBody.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/clang/tools/libclang/IndexBody.cpp b/clang/tools/libclang/IndexBody.cpp
index 9330194ceec..cce0bf705aa 100644
--- a/clang/tools/libclang/IndexBody.cpp
+++ b/clang/tools/libclang/IndexBody.cpp
@@ -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);
OpenPOWER on IntegriCloud