parent
42225e50f3
commit
775d092550
|
@ -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<CXXRecordDecl>(MD->getDeclContext());
|
||||
}
|
||||
|
||||
static bool isMember(Decl *D) {
|
||||
return isa<CXXRecordDecl>(D->getDeclContext());
|
||||
}
|
||||
};
|
||||
|
||||
/// LinkageSpecDecl - This represents a linkage specification. For example:
|
||||
/// extern "C" void foo();
|
||||
///
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue