summaryrefslogtreecommitdiffstats
path: root/clang/lib/Index/IndexSymbol.cpp
diff options
context:
space:
mode:
authorArgyrios Kyrtzidis <akyrtzi@gmail.com>2017-01-11 21:42:48 +0000
committerArgyrios Kyrtzidis <akyrtzi@gmail.com>2017-01-11 21:42:48 +0000
commit2a89c8594dccce680450129310e1a38b28b4b70f (patch)
tree53047495bd468e759aeb331c130a906b8040c75d /clang/lib/Index/IndexSymbol.cpp
parent7636532c1b6c2776d1f3216994d6c4413b3d0372 (diff)
downloadbcm5719-llvm-2a89c8594dccce680450129310e1a38b28b4b70f.tar.gz
bcm5719-llvm-2a89c8594dccce680450129310e1a38b28b4b70f.zip
[index] Introduce symbol subkinds to mark an accessor getter or setter.
llvm-svn: 291707
Diffstat (limited to 'clang/lib/Index/IndexSymbol.cpp')
-rw-r--r--clang/lib/Index/IndexSymbol.cpp14
1 files changed, 12 insertions, 2 deletions
diff --git a/clang/lib/Index/IndexSymbol.cpp b/clang/lib/Index/IndexSymbol.cpp
index 5192122ae1e..84984fce4dc 100644
--- a/clang/lib/Index/IndexSymbol.cpp
+++ b/clang/lib/Index/IndexSymbol.cpp
@@ -152,10 +152,18 @@ SymbolInfo index::getSymbolInfo(const Decl *D) {
Info.Lang = SymbolLanguage::ObjC;
break;
case Decl::ObjCMethod:
- if (cast<ObjCMethodDecl>(D)->isInstanceMethod())
+ if (cast<ObjCMethodDecl>(D)->isInstanceMethod()) {
+ const ObjCMethodDecl *MD = cast<ObjCMethodDecl>(D);
Info.Kind = SymbolKind::InstanceMethod;
- else
+ if (MD->isPropertyAccessor()) {
+ if (MD->param_size())
+ Info.SubKind = SymbolSubKind::AccessorSetter;
+ else
+ Info.SubKind = SymbolSubKind::AccessorGetter;
+ }
+ } else {
Info.Kind = SymbolKind::ClassMethod;
+ }
Info.Lang = SymbolLanguage::ObjC;
if (isUnitTest(cast<ObjCMethodDecl>(D)))
Info.Properties |= (unsigned)SymbolProperty::UnitTest;
@@ -379,6 +387,8 @@ StringRef index::getSymbolSubKindString(SymbolSubKind K) {
case SymbolSubKind::None: return "<none>";
case SymbolSubKind::CXXCopyConstructor: return "cxx-copy-ctor";
case SymbolSubKind::CXXMoveConstructor: return "cxx-move-ctor";
+ case SymbolSubKind::AccessorGetter: return "acc-get";
+ case SymbolSubKind::AccessorSetter: return "acc-set";
}
llvm_unreachable("invalid symbol subkind");
}
OpenPOWER on IntegriCloud