diff options
| author | John McCall <rjmccall@apple.com> | 2010-02-10 09:31:12 +0000 | 
|---|---|---|
| committer | John McCall <rjmccall@apple.com> | 2010-02-10 09:31:12 +0000 | 
| commit | 5b0829a321d56fe8349e3226efa66355d423c9e2 (patch) | |
| tree | 3339769f5a12bf179bd769d85391d8cd9cbaec87 /clang/lib/Sema/SemaCXXCast.cpp | |
| parent | f22553a1c713f7cc7eb1d249d16f85fe0e606b9e (diff) | |
| download | bcm5719-llvm-5b0829a321d56fe8349e3226efa66355d423c9e2.tar.gz bcm5719-llvm-5b0829a321d56fe8349e3226efa66355d423c9e2.zip | |
Improve access control diagnostics.  Perform access control on member-pointer
conversions.  Fix an access-control bug where privileges were not considered
at intermediate points along the inheritance path.  Prepare for friends.
llvm-svn: 95775
Diffstat (limited to 'clang/lib/Sema/SemaCXXCast.cpp')
| -rw-r--r-- | clang/lib/Sema/SemaCXXCast.cpp | 14 | 
1 files changed, 8 insertions, 6 deletions
| diff --git a/clang/lib/Sema/SemaCXXCast.cpp b/clang/lib/Sema/SemaCXXCast.cpp index 63823054d85..48258ff6ad6 100644 --- a/clang/lib/Sema/SemaCXXCast.cpp +++ b/clang/lib/Sema/SemaCXXCast.cpp @@ -778,9 +778,10 @@ TryStaticDowncast(Sema &Self, CanQualType SrcType, CanQualType DestType,      return TC_Failed;    } -  if (!CStyle && Self.CheckBaseClassAccess(DestType, SrcType, -                          diag::err_downcast_from_inaccessible_base, Paths, -                          OpRange.getBegin(), DeclarationName())) { +  if (!CStyle && Self.CheckBaseClassAccess(OpRange.getBegin(), +                                           /*IsBaseToDerived*/ true, +                                           SrcType, DestType, +                                           Paths.front())) {      msg = 0;      return TC_Failed;    } @@ -844,9 +845,10 @@ TryStaticMemberPointerUpcast(Sema &Self, QualType SrcType, QualType DestType,      return TC_Failed;    } -  if (!CStyle && Self.CheckBaseClassAccess(DestType, SrcType, -                          diag::err_downcast_from_inaccessible_base, Paths, -                          OpRange.getBegin(), DeclarationName())) { +  if (!CStyle && Self.CheckBaseClassAccess(OpRange.getBegin(), +                                           /*IsBaseToDerived*/ false, +                                           DestType, SrcType, +                                           Paths.front())) {      msg = 0;      return TC_Failed;    } | 

