diff options
| author | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2012-02-22 02:10:41 +0000 |
|---|---|---|
| committer | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2012-02-22 02:10:41 +0000 |
| commit | a1bed4cd96141eb92e94acd56d02167ec007626e (patch) | |
| tree | 83de603fe9fa0e6b07d3786c92ecbf2abad6023b /clang/tools | |
| parent | fd555f6b1fd950eff620e74da887dc37d919a276 (diff) | |
| download | bcm5719-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.cpp | 11 |
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); |

