Lines Matching full:entity
150 AccessTarget(const AccessedEntity &Entity)
151 : AccessedEntity(Entity) {
1013 /// Given that an entity has protected natural access, check whether
1095 AccessTarget &entity) {
1096 assert(entity.isMemberAccess());
1097 NamedDecl *D = entity.getTargetDecl();
1100 TryDiagnoseProtectedAccess(S, EC, entity))
1152 AccessTarget &entity) {
1154 AccessTarget::SavedInstanceContext _ = entity.saveInstanceContext();
1163 if (entity.isMemberAccess()) {
1164 NamedDecl *D = entity.getTargetDecl();
1166 const CXXRecordDecl *declaringClass = entity.getDeclaringClass();
1168 switch (HasAccess(S, EC, declaringClass, accessSoFar, entity)) {
1173 entity.suppressInstanceContext();
1178 declaringClass == entity.getEffectiveNamingClass())
1179 return diagnoseBadDirectAccess(S, EC, entity);
1188 CXXBasePath &path = *FindBestPath(S, EC, entity, accessSoFar, paths);
1198 // Is the entity accessible when named in the deriving class, as
1211 switch (HasAccess(S, EC, derivingClass, accessSoFar, entity)) {
1215 entity.suppressInstanceContext();
1234 return diagnoseBadDirectAccess(S, EC, entity);
1240 if (entity.isMemberAccess() ||
1254 if (entity.isMemberAccess())
1255 S.Diag(entity.getTargetDecl()->getLocation(),
1261 AccessTarget &Entity) {
1262 const CXXRecordDecl *NamingClass = Entity.getNamingClass();
1263 const CXXRecordDecl *DeclaringClass = Entity.getDeclaringClass();
1264 NamedDecl *D = (Entity.isMemberAccess() ? Entity.getTargetDecl() : nullptr);
1266 S.Diag(Loc, Entity.getDiag())
1267 << (Entity.getAccess() == AS_protected)
1271 DiagnoseAccessPath(S, EC, Entity);
1296 AccessTarget &Entity) {
1298 dyn_cast<UsingShadowDecl>(Entity.getTargetDecl())) {
1299 const NamedDecl *OrigDecl = Entity.getTargetDecl()->getUnderlyingDecl();
1300 if (Entity.getTargetDecl()->getAccess() == AS_private &&
1312 /// Determines whether the accessed entity is accessible. Public members
1316 AccessTarget &Entity) {
1318 const CXXRecordDecl *NamingClass = Entity.getEffectiveNamingClass();
1320 AccessSpecifier UnprivilegedAccess = Entity.getAccess();
1328 switch (HasAccess(S, EC, NamingClass, UnprivilegedAccess, Entity)) {
1344 AccessTarget::SavedInstanceContext _ = Entity.saveInstanceContext();
1350 if (Entity.isMemberAccess()) {
1353 NamedDecl *Target = Entity.getTargetDecl();
1354 const CXXRecordDecl *DeclaringClass = Entity.getDeclaringClass();
1357 switch (HasAccess(S, EC, DeclaringClass, FinalAccess, Entity)) {
1365 Entity.suppressInstanceContext();
1377 assert(Entity.getDeclaringClass() != NamingClass);
1381 CXXBasePath *Path = FindBestPath(S, EC, Entity, FinalAccess, Paths);
1395 const AccessTarget &Entity) {
1401 Entity.isMemberAccess(),
1402 Entity.getAccess(),
1403 Entity.getTargetDecl(),
1404 Entity.getNamingClass(),
1405 Entity.getBaseObjectType(),
1406 Entity.getDiag());
1409 /// Checks access to an entity from the given effective context.
1413 AccessTarget &Entity) {
1414 assert(Entity.getAccess() != AS_public && "called for public access!");
1416 switch (IsAccessible(S, EC, Entity)) {
1418 DelayDependentAccess(S, EC, Loc, Entity);
1423 IsMicrosoftUsingDeclarationAccessBug(S, Loc, Entity))
1425 if (!Entity.isQuiet())
1426 DiagnoseBadAccess(S, Loc, EC, Entity);
1438 AccessTarget &Entity) {
1440 if (Entity.getAccess() == AS_public)
1455 S.DelayedDiagnostics.add(DelayedDiagnostic::makeAccess(Loc, Entity));
1460 switch (CheckEffectiveAccess(S, EC, Loc, Entity)) {
1513 AccessTarget Entity(Context,
1518 Entity.setDiag(DD.getDiagnostic());
1519 CheckAccess(*this, Loc, Entity);
1521 AccessTarget Entity(Context,
1526 Entity.setDiag(DD.getDiagnostic());
1527 CheckAccess(*this, Loc, Entity);
1538 AccessTarget Entity(Context, AccessTarget::Member, E->getNamingClass(),
1540 Entity.setDiag(diag::err_access) << E->getSourceRange();
1542 return CheckAccess(*this, E->getNameLoc(), Entity);
1557 AccessTarget Entity(Context, AccessTarget::Member, E->getNamingClass(),
1559 Entity.setDiag(diag::err_access) << E->getSourceRange();
1561 return CheckAccess(*this, E->getMemberLoc(), Entity);
1572 AccessTarget entity(Context, AccessTarget::Member, decl->getParent(),
1576 entity.setDiag(PDiag());
1578 switch (CheckAccess(*this, SourceLocation(), entity)) {
1602 AccessTarget Entity(Context, AccessTarget::Member, NamingClass,
1605 Entity.setDiag(PDiag); // TODO: avoid copy
1607 return CheckAccess(*this, Loc, Entity);
1613 const InitializedEntity &Entity,
1620 switch (Entity.getKind()) {
1630 PD << Entity.isInheritedVirtualBase()
1631 << Entity.getBaseSpecifier()->getType() << getSpecialMember(Constructor);
1635 const FieldDecl *Field = cast<FieldDecl>(Entity.getDecl());
1642 StringRef VarName = Entity.getCapturedVarName();
1644 PD << VarName << Entity.getType() << getSpecialMember(Constructor);
1650 return CheckConstructorAccess(UseLoc, Constructor, Entity, Access, PD);
1656 const InitializedEntity &Entity,
1669 if (Entity.getKind() == InitializedEntity::EK_Base) {
1694 AccessTarget Entity(Context, AccessTarget::Member, NamingClass, Found,
1697 Entity.setDiag(diag::err_access)
1700 return CheckAccess(*this, OpLoc, Entity);
1712 AccessTarget Entity(Context, AccessTarget::Member, NamingClass,
1715 return CheckAccess(*this, UseLoc, Entity);
1731 AccessTarget Entity(Context, AccessTarget::Member, NamingClass, Found,
1733 Entity.setDiag(diag::err_access)
1737 return CheckAccess(*this, OpLoc, Entity);
1753 AccessTarget entity(Context, AccessTarget::Member,
1757 entity.setDiag(diag::err_access_friend_function)
1764 switch (CheckEffectiveAccess(*this, EC, target->getLocation(), entity)) {
1782 AccessTarget Entity(Context, AccessTarget::Member, NamingClass, Found,
1784 Entity.setDiag(diag::err_access)
1787 return CheckAccess(*this, Ovl->getNameLoc(), Entity);
1813 AccessTarget Entity(Context, AccessTarget::Base, BaseD, DerivedD,
1816 Entity.setDiag(DiagID) << Derived << Base;
1820 AccessLoc, Entity)) {
1827 return CheckAccess(*this, AccessLoc, Entity);
1838 AccessTarget Entity(Context, AccessedEntity::Member,
1841 Entity.setDiag(diag::err_access);
1842 CheckAccess(*this, R.getNameLoc(), Entity);
1859 AccessTarget Entity(Context, AccessedEntity::Member, Class,
1862 if (Entity.getAccess() == AS_public)
1866 return ::IsAccessible(*this, EC, Entity) != ::AR_inaccessible;