diff options
author | John McCall <rjmccall@apple.com> | 2010-03-18 08:19:33 +0000 |
---|---|---|
committer | John McCall <rjmccall@apple.com> | 2010-03-18 08:19:33 +0000 |
commit | 90c8c57bcd84083df85f76aac2aa62acb85eb077 (patch) | |
tree | 724fbabc17a3b8f7c75c25eefacdb758be1bc2b2 /lib/Sema/SemaAccess.cpp | |
parent | 622ab50adc847564d62dd88694166a7466a6136a (diff) |
from code inspection, we were treating placement news with one argument as
non-placement news when selecting the corresponding operator delete; this is
fixed.
Access and ambiguity control for calls to operator new and delete. Also AFAICT
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98818 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Sema/SemaAccess.cpp')
-rw-r--r-- | lib/Sema/SemaAccess.cpp | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/lib/Sema/SemaAccess.cpp b/lib/Sema/SemaAccess.cpp index 6c01fee74c..3737c50602 100644 --- a/lib/Sema/SemaAccess.cpp +++ b/lib/Sema/SemaAccess.cpp @@ -591,6 +591,24 @@ Sema::AccessResult Sema::CheckDirectMemberAccess(SourceLocation UseLoc, } +/// Checks access to an overloaded operator new or delete. +Sema::AccessResult Sema::CheckAllocationAccess(SourceLocation OpLoc, + SourceRange PlacementRange, + CXXRecordDecl *NamingClass, + NamedDecl *Fn, + AccessSpecifier Access) { + if (!getLangOptions().AccessControl || + !NamingClass || + Access == AS_public) + return AR_accessible; + + AccessedEntity Entity(AccessedEntity::Member, NamingClass, Access, Fn); + Entity.setDiag(diag::err_access) + << PlacementRange; + + return CheckAccess(*this, OpLoc, Entity); +} + /// Checks access to an overloaded member operator, including /// conversion operators. Sema::AccessResult Sema::CheckMemberOperatorAccess(SourceLocation OpLoc, |