diff options
Diffstat (limited to 'clang/lib')
-rw-r--r-- | clang/lib/AST/DeclBase.cpp | 8 | ||||
-rw-r--r-- | clang/lib/Sema/SemaDecl.cpp | 4 |
2 files changed, 11 insertions, 1 deletions
diff --git a/clang/lib/AST/DeclBase.cpp b/clang/lib/AST/DeclBase.cpp index 812c362acd3..cb126184435 100644 --- a/clang/lib/AST/DeclBase.cpp +++ b/clang/lib/AST/DeclBase.cpp @@ -272,6 +272,14 @@ DeclContext *Decl::castToDeclContext(const Decl *D) { } } +#ifndef NDEBUG +void Decl::CheckAccessDeclContext() const { + assert((Access != AS_none || !isa<CXXRecordDecl>(getDeclContext())) && + "Access specifier is AS_none inside a record decl"); +} + +#endif + //===----------------------------------------------------------------------===// // DeclContext Implementation //===----------------------------------------------------------------------===// diff --git a/clang/lib/Sema/SemaDecl.cpp b/clang/lib/Sema/SemaDecl.cpp index 220113734f0..835792ee2db 100644 --- a/clang/lib/Sema/SemaDecl.cpp +++ b/clang/lib/Sema/SemaDecl.cpp @@ -3384,7 +3384,9 @@ CreateNewDecl: // lexical context will be different from the semantic context. New->setLexicalDeclContext(CurContext); - if (AS != AS_none) + if (PrevDecl) + New->setAccess(PrevDecl->getAccess()); + else New->setAccess(AS); if (TK == TK_Definition) |