summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/SemaAccess.cpp
diff options
context:
space:
mode:
authorJohn McCall <rjmccall@apple.com>2010-03-18 08:19:33 +0000
committerJohn McCall <rjmccall@apple.com>2010-03-18 08:19:33 +0000
commitfb6f52671ad53d3ab035a9b0f145a0b15f60efde (patch)
tree1710314df02cf27d3d499da136ee54e709a0843b /clang/lib/Sema/SemaAccess.cpp
parent5497e49ae4d5abbcef88e1885389cb587e370710 (diff)
downloadbcm5719-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.cpp18
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,
OpenPOWER on IntegriCloud