зеркало из https://github.com/microsoft/clang-1.git
[libclang] Indexing API: make sure we do not try to index local declarations.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144764 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Родитель
c6b4a50995
Коммит
d6c8209fd1
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -36,6 +36,8 @@ public:
|
|||
|
||||
bool VisitTagTypeLoc(TagTypeLoc TL) {
|
||||
TagDecl *D = TL.getDecl();
|
||||
if (D->getParentFunctionOrMethod())
|
||||
return true;
|
||||
|
||||
if (TL.isDefinition()) {
|
||||
IndexCtx.indexTagDecl(D);
|
||||
|
|
|
@ -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)
|
||||
|
|
Загрузка…
Ссылка в новой задаче