aboutsummaryrefslogtreecommitdiff
path: root/lib/Sema/SemaDecl.cpp
diff options
context:
space:
mode:
authorAnders Carlsson <andersca@mac.com>2009-03-26 01:19:02 +0000
committerAnders Carlsson <andersca@mac.com>2009-03-26 01:19:02 +0000
commit0cf8830a45115176ef5ba5416b7ad7aa9d5cb255 (patch)
treef183a6590a8d94d43d04682ea0dfb35422e99469 /lib/Sema/SemaDecl.cpp
parent5aeccdbb4bdc94e48c04cacc59fa812af32109b2 (diff)
Factor the member access specifier setting code into its own function. No intended functionality change.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67725 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Sema/SemaDecl.cpp')
-rw-r--r--lib/Sema/SemaDecl.cpp29
1 files changed, 2 insertions, 27 deletions
diff --git a/lib/Sema/SemaDecl.cpp b/lib/Sema/SemaDecl.cpp
index d974301785..e9f586583c 100644
--- a/lib/Sema/SemaDecl.cpp
+++ b/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();