Lines Matching defs:ClassDecl

2989 void Sema::ActOnBaseSpecifiers(Decl *ClassDecl,
2991 if (!ClassDecl || Bases.empty())
2994 AdjustDeclIfTemplate(ClassDecl);
2995 AttachBaseSpecifiers(cast<CXXRecordDecl>(ClassDecl), Bases);
4194 CXXRecordDecl *ClassDecl,
4200 for (const auto &Base : ClassDecl->bases()) {
4218 if (SemaRef.IsDerivedFrom(ClassDecl->getLocation(),
4219 SemaRef.Context.getTypeDeclType(ClassDecl),
4272 explicit MemInitializerValidatorCCC(CXXRecordDecl *ClassDecl)
4273 : ClassDecl(ClassDecl) {}
4278 return Member->getDeclContext()->getRedeclContext()->Equals(ClassDecl);
4289 CXXRecordDecl *ClassDecl;
4295 RecordDecl *ClassDecl,
4297 DeclContextLookupResult Result = ClassDecl->lookup(Name);
4319 Sema::tryLookupUnambiguousFieldDecl(RecordDecl *ClassDecl,
4322 for (auto *D : ClassDecl->lookup(MemberOrBase)) {
4338 ValueDecl *Sema::tryLookupCtorInitMemberDecl(CXXRecordDecl *ClassDecl,
4344 return tryLookupUnambiguousFieldDecl(ClassDecl, MemberOrBase);
4378 CXXRecordDecl *ClassDecl = Constructor->getParent();
4393 ClassDecl, SS, TemplateTypeTy, MemberOrBase)) {
4463 for (auto const &Base : ClassDecl->bases()) {
4480 MemInitializerValidatorCCC CCC(ClassDecl);
4483 CCC, CTK_ErrorRecovery, ClassDecl))) {
4495 if (FindBaseInitializer(*this, ClassDecl,
4538 return BuildBaseInitializer(BaseType, TInfo, Init, ClassDecl, EllipsisLoc);
4626 CXXRecordDecl *ClassDecl) {
4643 QualType(ClassDecl->getTypeForDecl(), 0));
4667 QualType(ClassDecl->getTypeForDecl(), 0));
4689 Expr *Init, CXXRecordDecl *ClassDecl,
4732 if (Context.hasSameUnqualifiedType(QualType(ClassDecl->getTypeForDecl(),0),
4734 return BuildDelegatingInitializer(BaseTInfo, Init, ClassDecl);
4736 FindBaseInitializer(*this, ClassDecl, BaseType, DirectBaseSpec,
4749 if (ClassDecl->hasAnyDependentBases())
4753 << BaseType << Context.getTypeDeclType(ClassDecl)
5312 CXXRecordDecl *ClassDecl = Constructor->getParent()->getDefinition();
5313 if (!ClassDecl)
5343 for (auto &I : ClassDecl->bases()) {
5349 for (auto &VBase : ClassDecl->vbases()) {
5356 if (ClassDecl->isAbstract()) {
5360 << VBase.getType() << ClassDecl;
5361 DiagnoseAbstractType(ClassDecl);
5365 } else if (!AnyErrors && !ClassDecl->isAbstract()) {
5384 for (auto &Base : ClassDecl->bases()) {
5406 for (auto *Mem : ClassDecl->decls()) {
5432 assert(ClassDecl->hasFlexibleArrayMember() &&
5526 const CXXRecordDecl *ClassDecl = Constructor->getParent();
5529 for (const auto &VBase : ClassDecl->vbases())
5533 for (const auto &Base : ClassDecl->bases()) {
5540 for (auto *Field : ClassDecl->fields()) {
5764 CXXRecordDecl *ClassDecl) {
5767 if (ClassDecl->isDependentContext() || ClassDecl->isUnion())
5776 for (auto *Field : ClassDecl->fields()) {
5814 bool VisitVirtualBases = !ClassDecl->isAbstract();
5820 CXXDestructorDecl *Dtor = ClassDecl->getDestructor();
5828 for (const auto &Base : ClassDecl->bases()) {
5856 Context.getTypeDeclType(ClassDecl));
5863 MarkVirtualBaseDestructorsReferenced(Location, ClassDecl,
5868 SourceLocation Location, CXXRecordDecl *ClassDecl,
5871 for (const auto &VBase : ClassDecl->vbases()) {
5891 ClassDecl->getLocation(), Dtor,
5893 << Context.getTypeDeclType(ClassDecl) << VBase.getType(),
5894 Context.getTypeDeclType(ClassDecl)) ==
5897 Context.getTypeDeclType(ClassDecl), VBase.getType(),
5898 diag::err_access_dtor_vbase, 0, ClassDecl->getLocation(),
5913 if (CXXRecordDecl *ClassDecl = Constructor->getParent();
5914 !ClassDecl || ClassDecl->isInvalidDecl()) {
7378 Sema &S, CXXRecordDecl *ClassDecl, CXXSpecialMemberKind CSM, unsigned Quals,
7391 Inherited->findConstructorForBase(ClassDecl, InheritedCtor).first;
7397 return ClassDecl->hasConstexprDefaultConstructor();
7399 return ClassDecl->hasConstexprDestructor();
7402 lookupCallFromSpecialMember(S, ClassDecl, CSM, Quals, ConstRHS);
7413 Sema &S, CXXRecordDecl *ClassDecl, CXXSpecialMemberKind CSM, bool ConstArg,
7432 return ClassDecl->defaultedDefaultConstructorIsConstexpr();
7448 return ClassDecl->defaultedDestructorIsConstexpr();
7461 if (Ctor && ClassDecl->isUnion())
7463 ? ClassDecl->hasInClassInitializer() ||
7464 !ClassDecl->hasVariantMembers()
7468 if (Ctor && ClassDecl->getNumVBases())
7473 if (!Ctor && !ClassDecl->isLiteral() && !S.getLangOpts().CPlusPlus23)
7481 for (const auto &B : ClassDecl->bases()) {
7500 for (const auto *F : ClassDecl->fields()) {
10584 void Sema::AddImplicitlyDeclaredMembersToClass(CXXRecordDecl *ClassDecl) {
10588 if (!ClassDecl->isDependentType()) {
10589 if (ClassDecl->needsImplicitDefaultConstructor()) {
10592 if (ClassDecl->hasInheritedConstructor())
10593 DeclareImplicitDefaultConstructor(ClassDecl);
10596 if (ClassDecl->needsImplicitCopyConstructor()) {
10602 if (ClassDecl->needsOverloadResolutionForCopyConstructor() ||
10603 ClassDecl->hasInheritedConstructor())
10604 DeclareImplicitCopyConstructor(ClassDecl);
10611 (ClassDecl->hasUserDeclaredMoveConstructor() ||
10612 ClassDecl->needsOverloadResolutionForMoveConstructor() ||
10613 ClassDecl->hasUserDeclaredMoveAssignment() ||
10614 ClassDecl->needsOverloadResolutionForMoveAssignment()))
10615 DeclareImplicitCopyConstructor(ClassDecl);
10619 ClassDecl->needsImplicitMoveConstructor()) {
10622 if (ClassDecl->needsOverloadResolutionForMoveConstructor() ||
10623 ClassDecl->hasInheritedConstructor())
10624 DeclareImplicitMoveConstructor(ClassDecl);
10627 if (ClassDecl->needsImplicitCopyAssignment()) {
10634 if (ClassDecl->isDynamicClass() ||
10635 ClassDecl->needsOverloadResolutionForCopyAssignment() ||
10636 ClassDecl->hasInheritedAssignment())
10637 DeclareImplicitCopyAssignment(ClassDecl);
10640 if (getLangOpts().CPlusPlus11 && ClassDecl->needsImplicitMoveAssignment()) {
10644 if (ClassDecl->isDynamicClass() ||
10645 ClassDecl->needsOverloadResolutionForMoveAssignment() ||
10646 ClassDecl->hasInheritedAssignment())
10647 DeclareImplicitMoveAssignment(ClassDecl);
10650 if (ClassDecl->needsImplicitDestructor()) {
10657 if (ClassDecl->isDynamicClass() ||
10658 ClassDecl->needsOverloadResolutionForDestructor())
10659 DeclareImplicitDestructor(ClassDecl);
10674 findImplicitlyDeclaredEqualityComparisons(Context, ClassDecl,
10677 DeclareImplicitEqualityComparison(ClassDecl, FD);
10907 CXXRecordDecl *ClassDecl
10909 if (!ClassDecl)
10922 QualType ClassTy = Context.getTagDeclType(ClassDecl);
11280 CXXRecordDecl *ClassDecl = cast<CXXRecordDecl>(Conversion->getDeclContext());
11291 = Context.getCanonicalType(Context.getTypeDeclType(ClassDecl));
13801 CXXRecordDecl *ClassDecl = MD->getParent();
13807 if (ClassDecl->isInvalidDecl())
13814 S.Context.getRecordType(ClassDecl),
13926 CXXRecordDecl *ClassDecl) {
13933 assert(ClassDecl->needsImplicitDefaultConstructor() &&
13936 DeclaringSpecialMember DSM(*this, ClassDecl,
13942 *this, ClassDecl, CXXSpecialMemberKind::DefaultConstructor, false);
13946 = Context.getCanonicalType(Context.getTypeDeclType(ClassDecl));
13947 SourceLocation ClassLoc = ClassDecl->getLocation();
13952 Context, ClassDecl, ClassLoc, NameInfo, /*Type*/ QualType(),
13965 ClassDecl, CXXSpecialMemberKind::DefaultConstructor, DefaultCon,
13971 DefaultCon->setTrivial(ClassDecl->hasTrivialDefaultConstructor());
13976 Scope *S = getScopeForContext(ClassDecl);
13985 ClassDecl->addDecl(DefaultCon);
13999 CXXRecordDecl *ClassDecl = Constructor->getParent();
14000 assert(ClassDecl && "DefineImplicitDefaultConstructor - invalid constructor");
14001 if (ClassDecl->isInvalidDecl()) {
14011 MarkVTableUsed(CurrentLocation, ClassDecl);
14136 CXXRecordDecl *ClassDecl = Constructor->getParent();
14151 MarkVTableUsed(CurrentLocation, ClassDecl);
14215 CXXDestructorDecl *Sema::DeclareImplicitDestructor(CXXRecordDecl *ClassDecl) {
14220 assert(ClassDecl->needsImplicitDestructor());
14222 DeclaringSpecialMember DSM(*this, ClassDecl,
14228 *this, ClassDecl, CXXSpecialMemberKind::Destructor, false);
14232 = Context.getCanonicalType(Context.getTypeDeclType(ClassDecl));
14233 SourceLocation ClassLoc = ClassDecl->getLocation();
14238 Context, ClassDecl, ClassLoc, NameInfo, QualType(), nullptr,
14251 ClassDecl, CXXSpecialMemberKind::Destructor, Destructor,
14257 Destructor->setTrivial(ClassDecl->hasTrivialDestructor());
14258 Destructor->setTrivialForCall(ClassDecl->hasAttr<TrivialABIAttr>() ||
14259 ClassDecl->hasTrivialDestructorForCall());
14264 Scope *S = getScopeForContext(ClassDecl);
14270 if (ClassDecl->isCompleteDefinition() &&
14277 ClassDecl->addDecl(Destructor);
14291 CXXRecordDecl *ClassDecl = Destructor->getParent();
14292 assert(ClassDecl && "DefineImplicitDestructor - invalid destructor");
14300 MarkVTableUsed(CurrentLocation, ClassDecl);
14329 CXXRecordDecl *ClassDecl = Destructor->getParent();
14332 assert(ClassDecl->getNumVBases() > 0 &&
14340 MarkVirtualBaseDestructorsReferenced(Destructor->getLocation(), ClassDecl);
14649 CXXRecordDecl *ClassDecl = cast<CXXRecordDecl>(RecordTy->getDecl());
14655 S.LookupQualifiedName(OpLookup, ClassDecl, false);
14842 CXXMethodDecl *Sema::DeclareImplicitCopyAssignment(CXXRecordDecl *ClassDecl) {
14847 assert(ClassDecl->needsImplicitCopyAssignment());
14849 DeclaringSpecialMember DSM(*this, ClassDecl,
14854 QualType ArgType = Context.getTypeDeclType(ClassDecl);
14861 bool Const = ClassDecl->implicitCopyAssignmentHasConstParam();
14868 *this, ClassDecl, CXXSpecialMemberKind::CopyAssignment, Const);
14873 SourceLocation ClassLoc = ClassDecl->getLocation();
14876 Context, ClassDecl, ClassLoc, NameInfo, QualType(),
14890 ClassDecl, CXXSpecialMemberKind::CopyAssignment, CopyAssignment,
14903 ClassDecl->needsOverloadResolutionForCopyAssignment()
14906 : ClassDecl->hasTrivialCopyAssignment());
14911 Scope *S = getScopeForContext(ClassDecl);
14916 ClassDecl->setImplicitCopyAssignmentIsDeleted();
14922 ClassDecl->addDecl(CopyAssignment);
14988 CXXRecordDecl *ClassDecl = CopyAssignOperator->getParent();
14989 if (ClassDecl->isInvalidDecl()) {
15062 for (auto &Base : ClassDecl->bases()) {
15101 for (auto *Field : ClassDecl->fields()) {
15114 Diag(ClassDecl->getLocation(), diag::err_uninitialized_member_for_assign)
15115 << Context.getTagDeclType(ClassDecl) << 0 << Field->getDeclName();
15124 Diag(ClassDecl->getLocation(), diag::err_uninitialized_member_for_assign)
15125 << Context.getTagDeclType(ClassDecl) << 1 << Field->getDeclName();
15137 assert(ClassDecl->hasFlexibleArrayMember() &&
15199 CXXMethodDecl *Sema::DeclareImplicitMoveAssignment(CXXRecordDecl *ClassDecl) {
15200 assert(ClassDecl->needsImplicitMoveAssignment());
15202 DeclaringSpecialMember DSM(*this, ClassDecl,
15210 QualType ArgType = Context.getTypeDeclType(ClassDecl);
15220 *this, ClassDecl, CXXSpecialMemberKind::MoveAssignment, false);
15225 SourceLocation ClassLoc = ClassDecl->getLocation();
15228 Context, ClassDecl, ClassLoc, NameInfo, QualType(),
15242 ClassDecl, CXXSpecialMemberKind::MoveAssignment, MoveAssignment,
15255 ClassDecl->needsOverloadResolutionForMoveAssignment()
15258 : ClassDecl->hasTrivialMoveAssignment());
15263 Scope *S = getScopeForContext(ClassDecl);
15268 ClassDecl->setImplicitMoveAssignmentIsDeleted();
15274 ClassDecl->addDecl(MoveAssignment);
15373 CXXRecordDecl *ClassDecl = MoveAssignOperator->getParent();
15374 if (ClassDecl->isInvalidDecl()) {
15389 checkMoveAssignmentForRepeatedMove(*this, ClassDecl, CurrentLocation);
15441 for (auto &Base : ClassDecl->bases()) {
15488 for (auto *Field : ClassDecl->fields()) {
15501 Diag(ClassDecl->getLocation(), diag::err_uninitialized_member_for_assign)
15502 << Context.getTagDeclType(ClassDecl) << 0 << Field->getDeclName();
15511 Diag(ClassDecl->getLocation(), diag::err_uninitialized_member_for_assign)
15512 << Context.getTagDeclType(ClassDecl) << 1 << Field->getDeclName();
15524 assert(ClassDecl->hasFlexibleArrayMember() &&
15592 CXXRecordDecl *ClassDecl) {
15596 assert(ClassDecl->needsImplicitCopyConstructor());
15598 DeclaringSpecialMember DSM(*this, ClassDecl,
15603 QualType ClassType = Context.getTypeDeclType(ClassDecl);
15607 bool Const = ClassDecl->implicitCopyConstructorHasConstParam();
15618 *this, ClassDecl, CXXSpecialMemberKind::CopyConstructor, Const);
15623 SourceLocation ClassLoc = ClassDecl->getLocation();
15629 Context, ClassDecl, ClassLoc, NameInfo, QualType(), /*TInfo=*/nullptr,
15642 ClassDecl, CXXSpecialMemberKind::CopyConstructor, CopyConstructor,
15650 if (inTemplateInstantiation() && ClassDecl->isLambda())
15661 ClassDecl->needsOverloadResolutionForCopyConstructor()
15664 : ClassDecl->hasTrivialCopyConstructor());
15667 ClassDecl->hasAttr<TrivialABIAttr>() ||
15668 (ClassDecl->needsOverloadResolutionForCopyConstructor()
15672 : ClassDecl->hasTrivialCopyConstructorForCall()));
15677 Scope *S = getScopeForContext(ClassDecl);
15682 ClassDecl->setImplicitCopyConstructorIsDeleted();
15688 ClassDecl->addDecl(CopyConstructor);
15703 CXXRecordDecl *ClassDecl = CopyConstructor->getParent();
15704 assert(ClassDecl && "DefineImplicitCopyConstructor - invalid constructor");
15712 MarkVTableUsed(CurrentLocation, ClassDecl);
15742 CXXRecordDecl *ClassDecl) {
15743 assert(ClassDecl->needsImplicitMoveConstructor());
15745 DeclaringSpecialMember DSM(*this, ClassDecl,
15750 QualType ClassType = Context.getTypeDeclType(ClassDecl);
15761 *this, ClassDecl, CXXSpecialMemberKind::MoveConstructor, false);
15766 SourceLocation ClassLoc = ClassDecl->getLocation();
15773 Context, ClassDecl, ClassLoc, NameInfo, QualType(), /*TInfo=*/nullptr,
15786 ClassDecl, CXXSpecialMemberKind::MoveConstructor, MoveConstructor,
15799 ClassDecl->needsOverloadResolutionForMoveConstructor()
15802 : ClassDecl->hasTrivialMoveConstructor());
15805 ClassDecl->hasAttr<TrivialABIAttr>() ||
15806 (ClassDecl->needsOverloadResolutionForMoveConstructor()
15810 : ClassDecl->hasTrivialMoveConstructorForCall()));
15815 Scope *S = getScopeForContext(ClassDecl);
15820 ClassDecl->setImplicitMoveConstructorIsDeleted();
15826 ClassDecl->addDecl(MoveConstructor);
15841 CXXRecordDecl *ClassDecl = MoveConstructor->getParent();
15842 assert(ClassDecl && "DefineImplicitMoveConstructor - invalid constructor");
15850 MarkVTableUsed(CurrentLocation, ClassDecl);
16109 CXXRecordDecl *ClassDecl = cast<CXXRecordDecl>(Record->getDecl());
16110 if (ClassDecl->isInvalidDecl()) return;
16111 if (ClassDecl->hasIrrelevantDestructor()) return;
16112 if (ClassDecl->isDependentContext()) return;
16117 CXXDestructorDecl *Destructor = LookupDestructor(ClassDecl);