diff options
-rw-r--r-- | tools/libclang/IndexBody.cpp | 25 | ||||
-rw-r--r-- | tools/libclang/IndexTypeSourceInfo.cpp | 2 | ||||
-rw-r--r-- | tools/libclang/IndexingContext.cpp | 4 |
3 files changed, 10 insertions, 21 deletions
diff --git a/tools/libclang/IndexBody.cpp b/tools/libclang/IndexBody.cpp index 769a1c7ae8..ece1ed429c 100644 --- a/tools/libclang/IndexBody.cpp +++ b/tools/libclang/IndexBody.cpp @@ -32,35 +32,18 @@ public: } bool VisitDeclRefExpr(DeclRefExpr *E) { - const NamedDecl *D = E->getDecl(); - if (!D) - return true; - if (D->getParentFunctionOrMethod()) - return true; - - IndexCtx.handleReference(D, E->getLocation(), 0, ParentDC, E); + IndexCtx.handleReference(E->getDecl(), E->getLocation(), 0, ParentDC, E); return true; } bool VisitMemberExpr(MemberExpr *E) { - const NamedDecl *D = E->getMemberDecl(); - if (!D) - return true; - if (D->getParentFunctionOrMethod()) - return true; - - IndexCtx.handleReference(D, E->getMemberLoc(), 0, ParentDC, E); + IndexCtx.handleReference(E->getMemberDecl(), E->getMemberLoc(), 0, ParentDC, + E); return true; } bool VisitObjCIvarRefExpr(ObjCIvarRefExpr *E) { - const NamedDecl *D = E->getDecl(); - if (!D) - return true; - if (D->getParentFunctionOrMethod()) - return true; - - IndexCtx.handleReference(D, E->getLocation(), 0, ParentDC, E); + IndexCtx.handleReference(E->getDecl(), E->getLocation(), 0, ParentDC, E); return true; } diff --git a/tools/libclang/IndexTypeSourceInfo.cpp b/tools/libclang/IndexTypeSourceInfo.cpp index b63ebddfb0..5aeee0d263 100644 --- a/tools/libclang/IndexTypeSourceInfo.cpp +++ b/tools/libclang/IndexTypeSourceInfo.cpp @@ -36,6 +36,8 @@ public: bool VisitTagTypeLoc(TagTypeLoc TL) { TagDecl *D = TL.getDecl(); + if (D->getParentFunctionOrMethod()) + return true; if (TL.isDefinition()) { IndexCtx.indexTagDecl(D); diff --git a/tools/libclang/IndexingContext.cpp b/tools/libclang/IndexingContext.cpp index 15fcde174d..3ecc560d35 100644 --- a/tools/libclang/IndexingContext.cpp +++ b/tools/libclang/IndexingContext.cpp @@ -283,6 +283,10 @@ void IndexingContext::handleReference(const NamedDecl *D, SourceLocation Loc, const DeclContext *DC, const Expr *E, CXIdxEntityRefKind Kind) { + if (!D) + return; + if (D->getParentFunctionOrMethod()) + return; if (Loc.isInvalid()) return; if (!CB.indexEntityReference) |