diff options
author | Anders Carlsson <andersca@mac.com> | 2009-03-26 01:19:02 +0000 |
---|---|---|
committer | Anders Carlsson <andersca@mac.com> | 2009-03-26 01:19:02 +0000 |
commit | 5558ca1d4f61b655ec1676a7061e478ea97a97d2 (patch) | |
tree | 0eeeb0b408ffe5e65829f67cf33a9b5ac00d0f6e /clang/lib/Sema/SemaDecl.cpp | |
parent | db90560c1c5314972c1d42fbb86e734cc4a2fd1c (diff) | |
download | bcm5719-llvm-5558ca1d4f61b655ec1676a7061e478ea97a97d2.tar.gz bcm5719-llvm-5558ca1d4f61b655ec1676a7061e478ea97a97d2.zip |
Factor the member access specifier setting code into its own function. No intended functionality change.
llvm-svn: 67725
Diffstat (limited to 'clang/lib/Sema/SemaDecl.cpp')
-rw-r--r-- | clang/lib/Sema/SemaDecl.cpp | 29 |
1 files changed, 2 insertions, 27 deletions
diff --git a/clang/lib/Sema/SemaDecl.cpp b/clang/lib/Sema/SemaDecl.cpp index d9743017850..e9f586583c9 100644 --- a/clang/lib/Sema/SemaDecl.cpp +++ b/clang/lib/Sema/SemaDecl.cpp @@ -3083,21 +3083,6 @@ TypedefDecl *Sema::ParseTypedefDecl(Scope *S, Declarator &D, QualType T, return NewTD; } -static const char *getAccessName(AccessSpecifier AS) { - switch (AS) { - default: - case AS_none: - assert("Invalid access specifier!"); - return 0; - case AS_public: - return "public"; - case AS_private: - return "private"; - case AS_protected: - return "protected"; - } -} - /// ActOnTag - This is invoked when we see 'struct foo' or 'struct {'. In the /// former case, Name will be non-null. In the later case, Name will be null. /// TagSpec indicates what kind of tag this is. TK indicates whether this is a @@ -3399,18 +3384,8 @@ CreateNewDecl: // lexical context will be different from the semantic context. New->setLexicalDeclContext(CurContext); - if (PrevDecl) { - // C++ [class.access.spec]p3: When a member is redeclared its access - // specifier must be same as its initial declaration. - if (AS != AS_none && AS != PrevDecl->getAccess()) { - Diag(Loc, diag::err_class_redeclared_with_different_access) - << New << getAccessName(AS); - Diag(PrevDecl->getLocation(), diag::note_previous_access_declaration) - << PrevDecl << getAccessName(PrevDecl->getAccess()); - } else - New->setAccess(PrevDecl->getAccess()); - } else - New->setAccess(AS); + // Set the access specifier. + SetMemberAccessSpecifier(New, PrevDecl, AS); if (TK == TK_Definition) New->startDefinition(); |