diff options
author | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2018-08-26 06:27:23 +0000 |
---|---|---|
committer | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2018-08-26 06:27:23 +0000 |
commit | 7c3a12ff425ae850dc9dbbe04e181a892d06fd4d (patch) | |
tree | 5348d812a9910c250ab0c81227566f6acfce6c75 /clang/lib/Index/IndexSymbol.cpp | |
parent | 4240ecb9097e1ce7f7f4aa5194e17d18ebce359a (diff) | |
download | bcm5719-llvm-7c3a12ff425ae850dc9dbbe04e181a892d06fd4d.tar.gz bcm5719-llvm-7c3a12ff425ae850dc9dbbe04e181a892d06fd4d.zip |
[index] Introduce 'ProtocolInterface' as part of SymbolPropertySet
This is useful to directly infer that a method or property is from a protocol interface
at the point of the symbol occurrences.
llvm-svn: 340696
Diffstat (limited to 'clang/lib/Index/IndexSymbol.cpp')
-rw-r--r-- | clang/lib/Index/IndexSymbol.cpp | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/clang/lib/Index/IndexSymbol.cpp b/clang/lib/Index/IndexSymbol.cpp index 03b55ffe8a4..1cdc0984f78 100644 --- a/clang/lib/Index/IndexSymbol.cpp +++ b/clang/lib/Index/IndexSymbol.cpp @@ -96,6 +96,9 @@ SymbolInfo index::getSymbolInfo(const Decl *D) { if (isFunctionLocalSymbol(D)) { Info.Properties |= (SymbolPropertySet)SymbolProperty::Local; } + if (isa<ObjCProtocolDecl>(D->getDeclContext())) { + Info.Properties |= (SymbolPropertySet)SymbolProperty::ProtocolInterface; + } if (const TagDecl *TD = dyn_cast<TagDecl>(D)) { switch (TD->getTagKind()) { @@ -519,6 +522,7 @@ void index::applyForEachSymbolProperty(SymbolPropertySet Props, APPLY_FOR_PROPERTY(IBOutletCollection); APPLY_FOR_PROPERTY(GKInspectable); APPLY_FOR_PROPERTY(Local); + APPLY_FOR_PROPERTY(ProtocolInterface); #undef APPLY_FOR_PROPERTY } @@ -539,6 +543,7 @@ void index::printSymbolProperties(SymbolPropertySet Props, raw_ostream &OS) { case SymbolProperty::IBOutletCollection: OS << "IBColl"; break; case SymbolProperty::GKInspectable: OS << "GKI"; break; case SymbolProperty::Local: OS << "local"; break; + case SymbolProperty::ProtocolInterface: OS << "protocol"; break; } }); } |