diff options
Diffstat (limited to 'clang/lib/Index/IndexBody.cpp')
-rw-r--r-- | clang/lib/Index/IndexBody.cpp | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/clang/lib/Index/IndexBody.cpp b/clang/lib/Index/IndexBody.cpp index 8b8235c..e5f1764 100644 --- a/clang/lib/Index/IndexBody.cpp +++ b/clang/lib/Index/IndexBody.cpp @@ -203,9 +203,12 @@ public: bool VisitDesignatedInitExpr(DesignatedInitExpr *E) { for (DesignatedInitExpr::Designator &D : llvm::reverse(E->designators())) { - if (D.isFieldDesignator() && D.getField()) - return IndexCtx.handleReference(D.getField(), D.getFieldLoc(), Parent, - ParentDC, SymbolRoleSet(), {}, E); + if (D.isFieldDesignator()) { + if (const FieldDecl *FD = D.getFieldDecl()) { + return IndexCtx.handleReference(FD, D.getFieldLoc(), Parent, + ParentDC, SymbolRoleSet(), {}, E); + } + } } return true; } @@ -417,10 +420,13 @@ public: auto visitSyntacticDesignatedInitExpr = [&](DesignatedInitExpr *E) -> bool { for (DesignatedInitExpr::Designator &D : llvm::reverse(E->designators())) { - if (D.isFieldDesignator() && D.getField()) - return IndexCtx.handleReference(D.getField(), D.getFieldLoc(), - Parent, ParentDC, SymbolRoleSet(), - {}, E); + if (D.isFieldDesignator()) { + if (const FieldDecl *FD = D.getFieldDecl()) { + return IndexCtx.handleReference(FD, D.getFieldLoc(), Parent, + ParentDC, SymbolRoleSet(), + /*Relations=*/{}, E); + } + } } return true; }; |