diff options
| author | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2017-03-07 09:38:08 +0000 |
|---|---|---|
| committer | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2017-03-07 09:38:08 +0000 |
| commit | a9706998f2bfe5c9087ef273182f5d95c09f8aa7 (patch) | |
| tree | fa6571f69f3d38f92eff90136126dd9128579d12 | |
| parent | 6ec5fdbc94ed672d226b7872f7dfa1b50785c113 (diff) | |
| download | bcm5719-llvm-a9706998f2bfe5c9087ef273182f5d95c09f8aa7.tar.gz bcm5719-llvm-a9706998f2bfe5c9087ef273182f5d95c09f8aa7.zip | |
[index] Mark categories of test classes with the 'UnitTest' symbol property as well.
llvm-svn: 297133
| -rw-r--r-- | clang/lib/Index/IndexSymbol.cpp | 10 | ||||
| -rw-r--r-- | clang/test/Index/Core/index-subkinds.m | 4 |
2 files changed, 11 insertions, 3 deletions
diff --git a/clang/lib/Index/IndexSymbol.cpp b/clang/lib/Index/IndexSymbol.cpp index ba315696551..785125cd5e0 100644 --- a/clang/lib/Index/IndexSymbol.cpp +++ b/clang/lib/Index/IndexSymbol.cpp @@ -185,10 +185,18 @@ SymbolInfo index::getSymbolInfo(const Decl *D) { Info.Lang = SymbolLanguage::ObjC; break; case Decl::ObjCCategory: - case Decl::ObjCCategoryImpl: + case Decl::ObjCCategoryImpl: { Info.Kind = SymbolKind::Extension; Info.Lang = SymbolLanguage::ObjC; + const ObjCInterfaceDecl *ClsD = nullptr; + if (auto *CatD = dyn_cast<ObjCCategoryDecl>(D)) + ClsD = CatD->getClassInterface(); + else + ClsD = cast<ObjCCategoryImplDecl>(D)->getClassInterface(); + if (isUnitTestCase(ClsD)) + Info.Properties |= (unsigned)SymbolProperty::UnitTest; break; + } case Decl::ObjCMethod: if (cast<ObjCMethodDecl>(D)->isInstanceMethod()) { const ObjCMethodDecl *MD = cast<ObjCMethodDecl>(D); diff --git a/clang/test/Index/Core/index-subkinds.m b/clang/test/Index/Core/index-subkinds.m index 71959d4ce05..5eea046721b 100644 --- a/clang/test/Index/Core/index-subkinds.m +++ b/clang/test/Index/Core/index-subkinds.m @@ -28,11 +28,11 @@ // CHECK: [[@LINE+3]]:12 | class(test)/ObjC | MyTestCase | c:objc(cs)MyTestCase | _OBJC_CLASS_$_MyTestCase | Ref,RelExt,RelCont | rel: 1 // CHECK-NEXT: RelExt,RelCont | cat | c:objc(cy)MyTestCase@cat -// CHECK: [[@LINE+1]]:23 | extension/ObjC | cat | c:objc(cy)MyTestCase@cat | <no-cgname> | Decl | rel: 0 +// CHECK: [[@LINE+1]]:23 | extension(test)/ObjC | cat | c:objc(cy)MyTestCase@cat | <no-cgname> | Decl | rel: 0 @interface MyTestCase(cat) @end // CHECK: [[@LINE+2]]:17 | class(test)/ObjC | MyTestCase | c:objc(cs)MyTestCase | _OBJC_CLASS_$_MyTestCase | Ref,RelCont | rel: 1 -// CHECK: [[@LINE+1]]:28 | extension/ObjC | cat | c:objc(cy)MyTestCase@cat | <no-cgname> | Def | rel: 0 +// CHECK: [[@LINE+1]]:28 | extension(test)/ObjC | cat | c:objc(cy)MyTestCase@cat | <no-cgname> | Def | rel: 0 @implementation MyTestCase(cat) // CHECK: [[@LINE+1]]:9 | instance-method(test)/ObjC | testInCat | c:objc(cs)MyTestCase(im)testInCat | -[MyTestCase(cat) testInCat] | Def,Dyn,RelChild | rel: 1 - (void)testInCat {} |

