diff options
-rw-r--r-- | lib/AST/DeclBase.cpp | 12 | ||||
-rw-r--r-- | lib/Sema/SemaDeclCXX.cpp | 2 | ||||
-rw-r--r-- | lib/Sema/SemaTemplateInstantiateDecl.cpp | 1 |
3 files changed, 5 insertions, 10 deletions
diff --git a/lib/AST/DeclBase.cpp b/lib/AST/DeclBase.cpp index 5d30795abd..3ced0eff4c 100644 --- a/lib/AST/DeclBase.cpp +++ b/lib/AST/DeclBase.cpp @@ -379,16 +379,8 @@ SourceLocation Decl::getBodyRBrace() const { #ifndef NDEBUG void Decl::CheckAccessDeclContext() const { - if (isa<TranslationUnitDecl>(this) || - !isa<CXXRecordDecl>(getDeclContext())) - return; - - // FIXME: Should friend declarations have access specifiers? - if (isa<FriendDecl>(this) || - getFriendObjectKind() != FOK_None) - return; - - assert(Access != AS_none && + assert((Access != AS_none || isa<TranslationUnitDecl>(this) || + !isa<CXXRecordDecl>(getDeclContext())) && "Access specifier is AS_none inside a record decl"); } diff --git a/lib/Sema/SemaDeclCXX.cpp b/lib/Sema/SemaDeclCXX.cpp index 89ea7cce27..4c4dd41017 100644 --- a/lib/Sema/SemaDeclCXX.cpp +++ b/lib/Sema/SemaDeclCXX.cpp @@ -3661,6 +3661,7 @@ Sema::DeclPtrTy Sema::ActOnFriendTypeDecl(Scope *S, FriendDecl *FD = FriendDecl::Create(Context, CurContext, Loc, FU, DS.getFriendSpecLoc()); + FD->setAccess(AS_public); CurContext->addDecl(FD); return DeclPtrTy::make(FD); @@ -3829,6 +3830,7 @@ Sema::DeclPtrTy Sema::ActOnFriendFunctionDecl(Scope *S, FriendDecl *FrD = FriendDecl::Create(Context, CurContext, D.getIdentifierLoc(), FD, DS.getFriendSpecLoc()); + FrD->setAccess(AS_public); CurContext->addDecl(FrD); return DeclPtrTy::make(FD); diff --git a/lib/Sema/SemaTemplateInstantiateDecl.cpp b/lib/Sema/SemaTemplateInstantiateDecl.cpp index df4ebfaa93..e2ebd09954 100644 --- a/lib/Sema/SemaTemplateInstantiateDecl.cpp +++ b/lib/Sema/SemaTemplateInstantiateDecl.cpp @@ -278,6 +278,7 @@ Decl *TemplateDeclInstantiator::VisitFriendDecl(FriendDecl *D) { FriendDecl *FD = FriendDecl::Create(SemaRef.Context, Owner, D->getLocation(), FU, D->getFriendLoc()); + FD->setAccess(AS_public); Owner->addDecl(FD); return FD; } |