diff options
author | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2016-03-31 20:18:22 +0000 |
---|---|---|
committer | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2016-03-31 20:18:22 +0000 |
commit | 66c49f78a35625e6cd5f82af030b5919effb3182 (patch) | |
tree | bdb066038adbc95ed613b7ddae2f619d95244cb3 /clang/lib/Index/IndexingContext.cpp | |
parent | 6099a4e7d4d190725add90fd471934480b00da5e (diff) | |
download | bcm5719-llvm-66c49f78a35625e6cd5f82af030b5919effb3182.tar.gz bcm5719-llvm-66c49f78a35625e6cd5f82af030b5919effb3182.zip |
[index] Fix regression where ObjC method declarations may mistakenly get indexed as definition.
rdar://25372906
llvm-svn: 265042
Diffstat (limited to 'clang/lib/Index/IndexingContext.cpp')
-rw-r--r-- | clang/lib/Index/IndexingContext.cpp | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/clang/lib/Index/IndexingContext.cpp b/clang/lib/Index/IndexingContext.cpp index 3d1d9902dd6..424c1034ae4 100644 --- a/clang/lib/Index/IndexingContext.cpp +++ b/clang/lib/Index/IndexingContext.cpp @@ -171,7 +171,7 @@ static const Decl *adjustTemplateImplicitInstantiation(const Decl *D) { return nullptr; } -static bool isDeclADefinition(const Decl *D, ASTContext &Ctx) { +static bool isDeclADefinition(const Decl *D, const DeclContext *ContainerDC, ASTContext &Ctx) { if (auto VD = dyn_cast<VarDecl>(D)) return VD->isThisDeclarationADefinition(Ctx); @@ -182,7 +182,7 @@ static bool isDeclADefinition(const Decl *D, ASTContext &Ctx) { return TD->isThisDeclarationADefinition(); if (auto MD = dyn_cast<ObjCMethodDecl>(D)) - return MD->isThisDeclarationADefinition(); + return MD->isThisDeclarationADefinition() || isa<ObjCImplDecl>(ContainerDC); if (isa<TypedefNameDecl>(D) || isa<EnumConstantDecl>(D) || @@ -284,7 +284,7 @@ bool IndexingContext::handleDeclOccurrence(const Decl *D, SourceLocation Loc, if (IsRef) Roles |= (unsigned)SymbolRole::Reference; - else if (isDeclADefinition(D, *Ctx)) + else if (isDeclADefinition(D, ContainerDC, *Ctx)) Roles |= (unsigned)SymbolRole::Definition; else Roles |= (unsigned)SymbolRole::Declaration; |