diff options
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; |