diff --git a/clang/include/clang/AST/DeclCXX.h b/clang/include/clang/AST/DeclCXX.h index 52ed01d04bd3..7b5eba78f7c1 100644 --- a/clang/include/clang/AST/DeclCXX.h +++ b/clang/include/clang/AST/DeclCXX.h @@ -759,36 +759,6 @@ public: static CXXConversionDecl* CreateImpl(llvm::Deserializer& D, ASTContext& C); }; -/// CXXClassMemberWrapper - A wrapper class for C++ class member decls. -/// Common functions like set/getAccess are included here to avoid bloating -/// the interface of non-C++ specific decl classes, like NamedDecl. -/// FIXME: Doug would like to remove this class. -class CXXClassMemberWrapper { - Decl *MD; - -public: - CXXClassMemberWrapper(Decl *D) : MD(D) { - assert(isMember(D) && "Not a C++ class member!"); - } - - AccessSpecifier getAccess() const { - return AccessSpecifier(MD->Access); - } - - void setAccess(AccessSpecifier AS) { - assert(AS != AS_none && "Access must be specified."); - MD->Access = AS; - } - - CXXRecordDecl *getParent() const { - return dyn_cast(MD->getDeclContext()); - } - - static bool isMember(Decl *D) { - return isa(D->getDeclContext()); - } -}; - /// LinkageSpecDecl - This represents a linkage specification. For example: /// extern "C" void foo(); /// diff --git a/clang/lib/Sema/SemaDeclCXX.cpp b/clang/lib/Sema/SemaDeclCXX.cpp index fa6fcc8c35a5..bedea3a7cd70 100644 --- a/clang/lib/Sema/SemaDeclCXX.cpp +++ b/clang/lib/Sema/SemaDeclCXX.cpp @@ -585,10 +585,7 @@ Sema::ActOnCXXMemberDeclarator(Scope *S, AccessSpecifier AS, Declarator &D, assert((Name || isInstField) && "No identifier for non-field ?"); - // set/getAccess is not part of Decl's interface to avoid bloating it with C++ - // specific methods. Use a wrapper class that can be used with all C++ class - // member decls. - CXXClassMemberWrapper(Member).setAccess(AS); + Member->setAccess(AS); // C++ [dcl.init.aggr]p1: // An aggregate is an array or a class (clause 9) with [...] no