diff options
Diffstat (limited to 'contrib/llvm/tools/clang/lib/AST/DeclObjC.cpp')
-rw-r--r-- | contrib/llvm/tools/clang/lib/AST/DeclObjC.cpp | 101 |
1 files changed, 54 insertions, 47 deletions
diff --git a/contrib/llvm/tools/clang/lib/AST/DeclObjC.cpp b/contrib/llvm/tools/clang/lib/AST/DeclObjC.cpp index d8bdb6369e94..f95d5def47ac 100644 --- a/contrib/llvm/tools/clang/lib/AST/DeclObjC.cpp +++ b/contrib/llvm/tools/clang/lib/AST/DeclObjC.cpp @@ -1,4 +1,4 @@ -//===--- DeclObjC.cpp - ObjC Declaration AST Node Implementation ----------===// +//===- DeclObjC.cpp - ObjC Declaration AST Node Implementation ------------===// // // The LLVM Compiler Infrastructure // @@ -15,9 +15,27 @@ #include "clang/AST/ASTContext.h" #include "clang/AST/ASTMutationListener.h" #include "clang/AST/Attr.h" +#include "clang/AST/Decl.h" +#include "clang/AST/DeclBase.h" #include "clang/AST/Stmt.h" -#include "llvm/ADT/STLExtras.h" +#include "clang/AST/Type.h" +#include "clang/AST/TypeLoc.h" +#include "clang/Basic/IdentifierTable.h" +#include "clang/Basic/LLVM.h" +#include "clang/Basic/LangOptions.h" +#include "clang/Basic/SourceLocation.h" +#include "llvm/ADT/None.h" #include "llvm/ADT/SmallString.h" +#include "llvm/ADT/SmallVector.h" +#include "llvm/Support/Casting.h" +#include "llvm/Support/ErrorHandling.h" +#include "llvm/Support/raw_ostream.h" +#include <algorithm> +#include <cassert> +#include <cstdint> +#include <cstring> +#include <utility> + using namespace clang; //===----------------------------------------------------------------------===// @@ -28,7 +46,6 @@ void ObjCListBase::set(void *const* InList, unsigned Elts, ASTContext &Ctx) { List = nullptr; if (Elts == 0) return; // Setting to an empty list is a noop. - List = new (Ctx) void*[Elts]; NumElts = Elts; memcpy(List, InList, sizeof(void*)*Elts); @@ -48,7 +65,7 @@ void ObjCProtocolList::set(ObjCProtocolDecl* const* InList, unsigned Elts, // ObjCInterfaceDecl //===----------------------------------------------------------------------===// -void ObjCContainerDecl::anchor() { } +void ObjCContainerDecl::anchor() {} /// getIvarDecl - This method looks up an ivar in this ContextDecl. /// @@ -82,7 +99,6 @@ ObjCContainerDecl::getMethod(Selector Sel, bool isInstance, // - (int) class_method; // + (float) class_method; // @end - // lookup_result R = lookup(Sel); for (lookup_iterator Meth = R.begin(), MethEnd = R.end(); Meth != MethEnd; ++Meth) { @@ -280,7 +296,7 @@ ObjCPropertyDecl *ObjCContainerDecl::FindPropertyDeclaration( return nullptr; } -void ObjCInterfaceDecl::anchor() { } +void ObjCInterfaceDecl::anchor() {} ObjCTypeParamList *ObjCInterfaceDecl::getTypeParamList() const { // If this particular declaration has a type parameter list, return it. @@ -341,7 +357,6 @@ SourceLocation ObjCInterfaceDecl::getSuperClassLoc() const { /// FindPropertyVisibleInPrimaryClass - Finds declaration of the property /// with name 'PropertyId' in the primary class; including those in protocols /// (direct or indirect) used by the primary class. -/// ObjCPropertyDecl * ObjCInterfaceDecl::FindPropertyVisibleInPrimaryClass( IdentifierInfo *PropertyId, @@ -409,8 +424,7 @@ const ObjCInterfaceDecl *ObjCInterfaceDecl::isObjCRequiresPropertyDefs() const { void ObjCInterfaceDecl::mergeClassExtensionProtocolList( ObjCProtocolDecl *const* ExtList, unsigned ExtNum, - ASTContext &C) -{ + ASTContext &C) { if (data().ExternallyCompleted) LoadExternalDefinition(); @@ -488,7 +502,7 @@ bool ObjCInterfaceDecl::inheritsDesignatedInitializers() const { return true; case DefinitionData::IDI_NotInherited: return false; - case DefinitionData::IDI_Unknown: { + case DefinitionData::IDI_Unknown: // If the class introduced initializers we conservatively assume that we // don't know if any of them is a designated initializer to avoid possible // misleading warnings. @@ -510,7 +524,6 @@ bool ObjCInterfaceDecl::inheritsDesignatedInitializers() const { return data().InheritedDesignatedInitializers == DefinitionData::IDI_Inherited; } - } llvm_unreachable("unexpected InheritedDesignatedInitializers value"); } @@ -902,7 +915,6 @@ ObjCMethodDecl *ObjCMethodDecl::getCanonicalDecl() { if (ObjCMethodDecl *MD = IFD->getMethod(getSelector(), isInstanceMethod())) return MD; - } else if (ObjCCategoryImplDecl *CImplD = dyn_cast<ObjCCategoryImplDecl>(CtxD)) { if (ObjCCategoryDecl *CatD = CImplD->getCategoryDecl()) @@ -1312,7 +1324,8 @@ ObjCMethodDecl::findPropertyDecl(bool CheckOverrides) const { if (!CheckOverrides) return nullptr; - typedef SmallVector<const ObjCMethodDecl *, 8> OverridesTy; + using OverridesTy = SmallVector<const ObjCMethodDecl *, 8>; + OverridesTy Overrides; getOverriddenMethods(Overrides); for (OverridesTy::const_iterator I = Overrides.begin(), E = Overrides.end(); @@ -1328,7 +1341,7 @@ ObjCMethodDecl::findPropertyDecl(bool CheckOverrides) const { // ObjCTypeParamDecl //===----------------------------------------------------------------------===// -void ObjCTypeParamDecl::anchor() { } +void ObjCTypeParamDecl::anchor() {} ObjCTypeParamDecl *ObjCTypeParamDecl::Create(ASTContext &ctx, DeclContext *dc, ObjCTypeParamVariance variance, @@ -1373,14 +1386,12 @@ SourceRange ObjCTypeParamDecl::getSourceRange() const { ObjCTypeParamList::ObjCTypeParamList(SourceLocation lAngleLoc, ArrayRef<ObjCTypeParamDecl *> typeParams, SourceLocation rAngleLoc) - : NumParams(typeParams.size()) -{ + : NumParams(typeParams.size()) { Brackets.Begin = lAngleLoc.getRawEncoding(); Brackets.End = rAngleLoc.getRawEncoding(); std::copy(typeParams.begin(), typeParams.end(), begin()); } - ObjCTypeParamList *ObjCTypeParamList::create( ASTContext &ctx, SourceLocation lAngleLoc, @@ -1438,8 +1449,7 @@ ObjCInterfaceDecl::ObjCInterfaceDecl(const ASTContext &C, DeclContext *DC, ObjCInterfaceDecl *PrevDecl, bool IsInternal) : ObjCContainerDecl(ObjCInterface, DC, Id, CLoc, AtLoc), - redeclarable_base(C), TypeForDecl(nullptr), TypeParamList(nullptr), - Data() { + redeclarable_base(C) { setPreviousDecl(PrevDecl); // Copy the 'data' pointer over. @@ -1518,19 +1528,22 @@ void ObjCInterfaceDecl::setImplementation(ObjCImplementationDecl *ImplD) { } namespace { - struct SynthesizeIvarChunk { - uint64_t Size; - ObjCIvarDecl *Ivar; - SynthesizeIvarChunk(uint64_t size, ObjCIvarDecl *ivar) + +struct SynthesizeIvarChunk { + uint64_t Size; + ObjCIvarDecl *Ivar; + + SynthesizeIvarChunk(uint64_t size, ObjCIvarDecl *ivar) : Size(size), Ivar(ivar) {} - }; +}; - bool operator<(const SynthesizeIvarChunk & LHS, - const SynthesizeIvarChunk &RHS) { - return LHS.Size < RHS.Size; - } +bool operator<(const SynthesizeIvarChunk & LHS, + const SynthesizeIvarChunk &RHS) { + return LHS.Size < RHS.Size; } +} // namespace + /// all_declared_ivar_begin - return first ivar declared in this class, /// its extensions and its implementation. Lazily build the list on first /// access. @@ -1694,7 +1707,7 @@ bool ObjCInterfaceDecl::ClassImplementsProtocol(ObjCProtocolDecl *lProto, // ObjCIvarDecl //===----------------------------------------------------------------------===// -void ObjCIvarDecl::anchor() { } +void ObjCIvarDecl::anchor() {} ObjCIvarDecl *ObjCIvarDecl::Create(ASTContext &C, ObjCContainerDecl *DC, SourceLocation StartLoc, @@ -1771,7 +1784,7 @@ QualType ObjCIvarDecl::getUsageType(QualType objectType) const { // ObjCAtDefsFieldDecl //===----------------------------------------------------------------------===// -void ObjCAtDefsFieldDecl::anchor() { } +void ObjCAtDefsFieldDecl::anchor() {} ObjCAtDefsFieldDecl *ObjCAtDefsFieldDecl::Create(ASTContext &C, DeclContext *DC, @@ -1791,14 +1804,14 @@ ObjCAtDefsFieldDecl *ObjCAtDefsFieldDecl::CreateDeserialized(ASTContext &C, // ObjCProtocolDecl //===----------------------------------------------------------------------===// -void ObjCProtocolDecl::anchor() { } +void ObjCProtocolDecl::anchor() {} ObjCProtocolDecl::ObjCProtocolDecl(ASTContext &C, DeclContext *DC, IdentifierInfo *Id, SourceLocation nameLoc, SourceLocation atStartLoc, ObjCProtocolDecl *PrevDecl) : ObjCContainerDecl(ObjCProtocol, DC, Id, nameLoc, atStartLoc), - redeclarable_base(C), Data() { + redeclarable_base(C) { setPreviousDecl(PrevDecl); if (PrevDecl) Data = PrevDecl->Data; @@ -1874,7 +1887,6 @@ void ObjCProtocolDecl::startDefinition() { void ObjCProtocolDecl::collectPropertiesToImplement(PropertyMap &PM, PropertyDeclOrder &PO) const { - if (const ObjCProtocolDecl *PDecl = getDefinition()) { for (auto *Prop : PDecl->properties()) { // Insert into PM if not there already. @@ -1921,7 +1933,7 @@ ObjCProtocolDecl::getObjCRuntimeNameAsString() const { // ObjCCategoryDecl //===----------------------------------------------------------------------===// -void ObjCCategoryDecl::anchor() { } +void ObjCCategoryDecl::anchor() {} ObjCCategoryDecl::ObjCCategoryDecl(DeclContext *DC, SourceLocation AtLoc, SourceLocation ClassNameLoc, @@ -1930,11 +1942,9 @@ ObjCCategoryDecl::ObjCCategoryDecl(DeclContext *DC, SourceLocation AtLoc, ObjCTypeParamList *typeParamList, SourceLocation IvarLBraceLoc, SourceLocation IvarRBraceLoc) - : ObjCContainerDecl(ObjCCategory, DC, Id, ClassNameLoc, AtLoc), - ClassInterface(IDecl), TypeParamList(nullptr), - NextClassCategory(nullptr), CategoryNameLoc(CategoryNameLoc), - IvarLBraceLoc(IvarLBraceLoc), IvarRBraceLoc(IvarRBraceLoc) -{ + : ObjCContainerDecl(ObjCCategory, DC, Id, ClassNameLoc, AtLoc), + ClassInterface(IDecl), CategoryNameLoc(CategoryNameLoc), + IvarLBraceLoc(IvarLBraceLoc), IvarRBraceLoc(IvarRBraceLoc) { setTypeParamList(typeParamList); } @@ -1994,7 +2004,7 @@ void ObjCCategoryDecl::setTypeParamList(ObjCTypeParamList *TPL) { // ObjCCategoryImplDecl //===----------------------------------------------------------------------===// -void ObjCCategoryImplDecl::anchor() { } +void ObjCCategoryImplDecl::anchor() {} ObjCCategoryImplDecl * ObjCCategoryImplDecl::Create(ASTContext &C, DeclContext *DC, @@ -2023,8 +2033,7 @@ ObjCCategoryDecl *ObjCCategoryImplDecl::getCategoryDecl() const { return nullptr; } - -void ObjCImplDecl::anchor() { } +void ObjCImplDecl::anchor() {} void ObjCImplDecl::addPropertyImplementation(ObjCPropertyImplDecl *property) { // FIXME: The context should be correct before we get here. @@ -2052,7 +2061,6 @@ void ObjCImplDecl::setClassInterface(ObjCInterfaceDecl *IFace) { /// FindPropertyImplIvarDecl - This method lookup the ivar in the list of /// properties implemented in this \@implementation block and returns /// the implemented property that uses it. -/// ObjCPropertyImplDecl *ObjCImplDecl:: FindPropertyImplIvarDecl(IdentifierInfo *ivarId) const { for (auto *PID : property_impls()) @@ -2065,7 +2073,6 @@ FindPropertyImplIvarDecl(IdentifierInfo *ivarId) const { /// FindPropertyImplDecl - This method looks up a previous ObjCPropertyImplDecl /// added to the list of those properties \@synthesized/\@dynamic in this /// category \@implementation block. -/// ObjCPropertyImplDecl *ObjCImplDecl:: FindPropertyImplDecl(IdentifierInfo *Id, ObjCPropertyQueryKind QueryKind) const { @@ -2103,7 +2110,7 @@ raw_ostream &clang::operator<<(raw_ostream &OS, // ObjCImplementationDecl //===----------------------------------------------------------------------===// -void ObjCImplementationDecl::anchor() { } +void ObjCImplementationDecl::anchor() {} ObjCImplementationDecl * ObjCImplementationDecl::Create(ASTContext &C, DeclContext *DC, @@ -2155,7 +2162,7 @@ raw_ostream &clang::operator<<(raw_ostream &OS, // ObjCCompatibleAliasDecl //===----------------------------------------------------------------------===// -void ObjCCompatibleAliasDecl::anchor() { } +void ObjCCompatibleAliasDecl::anchor() {} ObjCCompatibleAliasDecl * ObjCCompatibleAliasDecl::Create(ASTContext &C, DeclContext *DC, @@ -2175,7 +2182,7 @@ ObjCCompatibleAliasDecl::CreateDeserialized(ASTContext &C, unsigned ID) { // ObjCPropertyDecl //===----------------------------------------------------------------------===// -void ObjCPropertyDecl::anchor() { } +void ObjCPropertyDecl::anchor() {} ObjCPropertyDecl *ObjCPropertyDecl::Create(ASTContext &C, DeclContext *DC, SourceLocation L, |