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 | fb6f52671ad53d3ab035a9b0f145a0b15f60efde (patch) | |
tree | 1710314df02cf27d3d499da136ee54e709a0843b /clang/lib/Sema/SemaAccess.cpp | |
parent | 5497e49ae4d5abbcef88e1885389cb587e370710 (diff) | |
download | bcm5719-llvm-fb6f52671ad53d3ab035a9b0f145a0b15f60efde.tar.gz bcm5719-llvm-fb6f52671ad53d3ab035a9b0f145a0b15f60efde.zip |
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
llvm-svn: 98818
Diffstat (limited to 'clang/lib/Sema/SemaAccess.cpp')
-rw-r--r-- | clang/lib/Sema/SemaAccess.cpp | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/clang/lib/Sema/SemaAccess.cpp b/clang/lib/Sema/SemaAccess.cpp index 6c01fee74c3..3737c506027 100644 --- a/clang/lib/Sema/SemaAccess.cpp +++ b/clang/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, |