aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Sema/SemaAccess.cpp
diff options
context:
space:
mode:
authorMatheus Izvekov <mizvekov@gmail.com>2025-03-19 22:48:49 -0300
committerGitHub <noreply@github.com>2025-03-19 22:48:49 -0300
commit6003c3055a4630be31cc3d459cdbb88248a007b9 (patch)
tree790812c0159d053af03c3e0ce2d53baae4464cce /clang/lib/Sema/SemaAccess.cpp
parentead272460004519ccbd98d08d68c70123892cd4e (diff)
downloadllvm-6003c3055a4630be31cc3d459cdbb88248a007b9.zip
llvm-6003c3055a4630be31cc3d459cdbb88248a007b9.tar.gz
llvm-6003c3055a4630be31cc3d459cdbb88248a007b9.tar.bz2
[clang] NFC: Unify implementations of CheckMemberPointerConversion (#131966)
This deduplicates the implementation of CheckMemberPointerConversion accross SemaCast and SemaOverload.
Diffstat (limited to 'clang/lib/Sema/SemaAccess.cpp')
-rw-r--r--clang/lib/Sema/SemaAccess.cpp27
1 files changed, 12 insertions, 15 deletions
diff --git a/clang/lib/Sema/SemaAccess.cpp b/clang/lib/Sema/SemaAccess.cpp
index 6813786..4ba46a9 100644
--- a/clang/lib/Sema/SemaAccess.cpp
+++ b/clang/lib/Sema/SemaAccess.cpp
@@ -1874,11 +1874,9 @@ Sema::AccessResult Sema::CheckAddressOfMemberAccess(Expr *OvlExpr,
}
Sema::AccessResult Sema::CheckBaseClassAccess(SourceLocation AccessLoc,
- QualType Base,
- QualType Derived,
+ QualType Base, QualType Derived,
const CXXBasePath &Path,
- unsigned DiagID,
- bool ForceCheck,
+ unsigned DiagID, bool ForceCheck,
bool ForceUnprivileged) {
if (!ForceCheck && !getLangOpts().AccessControl)
return AR_accessible;
@@ -1886,21 +1884,20 @@ Sema::AccessResult Sema::CheckBaseClassAccess(SourceLocation AccessLoc,
if (Path.Access == AS_public)
return AR_accessible;
- CXXRecordDecl *BaseD, *DerivedD;
- BaseD = cast<CXXRecordDecl>(Base->castAs<RecordType>()->getDecl());
- DerivedD = cast<CXXRecordDecl>(Derived->castAs<RecordType>()->getDecl());
-
- AccessTarget Entity(Context, AccessTarget::Base, BaseD, DerivedD,
- Path.Access);
+ AccessTarget Entity(Context, AccessTarget::Base, Base->getAsCXXRecordDecl(),
+ Derived->getAsCXXRecordDecl(), Path.Access);
if (DiagID)
Entity.setDiag(DiagID) << Derived << Base;
if (ForceUnprivileged) {
- switch (CheckEffectiveAccess(*this, EffectiveContext(),
- AccessLoc, Entity)) {
- case ::AR_accessible: return Sema::AR_accessible;
- case ::AR_inaccessible: return Sema::AR_inaccessible;
- case ::AR_dependent: return Sema::AR_dependent;
+ switch (
+ CheckEffectiveAccess(*this, EffectiveContext(), AccessLoc, Entity)) {
+ case ::AR_accessible:
+ return Sema::AR_accessible;
+ case ::AR_inaccessible:
+ return Sema::AR_inaccessible;
+ case ::AR_dependent:
+ return Sema::AR_dependent;
}
llvm_unreachable("unexpected result from CheckEffectiveAccess");
}