diff options
Diffstat (limited to 'clang/lib/Index/USRGeneration.cpp')
-rw-r--r-- | clang/lib/Index/USRGeneration.cpp | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/clang/lib/Index/USRGeneration.cpp b/clang/lib/Index/USRGeneration.cpp index 394daf94c4b2d..0d1e812198234 100644 --- a/clang/lib/Index/USRGeneration.cpp +++ b/clang/lib/Index/USRGeneration.cpp @@ -11,6 +11,7 @@ #include "clang/AST/Attr.h" #include "clang/AST/DeclTemplate.h" #include "clang/AST/DeclVisitor.h" +#include "clang/Basic/FileManager.h" #include "clang/Lex/PreprocessingRecord.h" #include "llvm/Support/Path.h" #include "llvm/Support/raw_ostream.h" @@ -382,6 +383,14 @@ void USRGenerator::VisitNamespaceAliasDecl(const NamespaceAliasDecl *D) { Out << "@NA@" << D->getName(); } +static const ObjCCategoryDecl *getCategoryContext(const NamedDecl *D) { + if (auto *CD = dyn_cast<ObjCCategoryDecl>(D->getDeclContext())) + return CD; + if (auto *ICD = dyn_cast<ObjCCategoryImplDecl>(D->getDeclContext())) + return ICD->getCategoryDecl(); + return nullptr; +} + void USRGenerator::VisitObjCMethodDecl(const ObjCMethodDecl *D) { const DeclContext *container = D->getDeclContext(); if (const ObjCProtocolDecl *pd = dyn_cast<ObjCProtocolDecl>(container)) { @@ -395,14 +404,6 @@ void USRGenerator::VisitObjCMethodDecl(const ObjCMethodDecl *D) { IgnoreResults = true; return; } - auto getCategoryContext = [](const ObjCMethodDecl *D) -> - const ObjCCategoryDecl * { - if (auto *CD = dyn_cast<ObjCCategoryDecl>(D->getDeclContext())) - return CD; - if (auto *ICD = dyn_cast<ObjCCategoryImplDecl>(D->getDeclContext())) - return ICD->getCategoryDecl(); - return nullptr; - }; auto *CD = getCategoryContext(D); VisitObjCContainerDecl(ID, CD); } @@ -475,7 +476,7 @@ void USRGenerator::VisitObjCPropertyDecl(const ObjCPropertyDecl *D) { // The USR for a property declared in a class extension or category is based // on the ObjCInterfaceDecl, not the ObjCCategoryDecl. if (const ObjCInterfaceDecl *ID = Context->getObjContainingInterface(D)) - Visit(ID); + VisitObjCContainerDecl(ID, getCategoryContext(D)); else Visit(cast<Decl>(D->getDeclContext())); GenObjCProperty(D->getName(), D->isClassProperty()); @@ -752,6 +753,7 @@ void USRGenerator::VisitType(QualType T) { case BuiltinType::SatUShortFract: case BuiltinType::SatUFract: case BuiltinType::SatULongFract: + case BuiltinType::BFloat16: IgnoreResults = true; return; case BuiltinType::ObjCId: |