Lines Matching defs:ClassDecl
2935 void Sema::ActOnBaseSpecifiers(Decl *ClassDecl,
2937 if (!ClassDecl || Bases.empty())
2940 AdjustDeclIfTemplate(ClassDecl);
2941 AttachBaseSpecifiers(cast<CXXRecordDecl>(ClassDecl), Bases);
4127 CXXRecordDecl *ClassDecl,
4133 for (const auto &Base : ClassDecl->bases()) {
4151 if (SemaRef.IsDerivedFrom(ClassDecl->getLocation(),
4152 SemaRef.Context.getTypeDeclType(ClassDecl),
4205 explicit MemInitializerValidatorCCC(CXXRecordDecl *ClassDecl)
4206 : ClassDecl(ClassDecl) {}
4211 return Member->getDeclContext()->getRedeclContext()->Equals(ClassDecl);
4222 CXXRecordDecl *ClassDecl;
4228 RecordDecl *ClassDecl,
4230 DeclContextLookupResult Result = ClassDecl->lookup(Name);
4252 Sema::tryLookupUnambiguousFieldDecl(RecordDecl *ClassDecl,
4255 for (auto *D : ClassDecl->lookup(MemberOrBase)) {
4271 ValueDecl *Sema::tryLookupCtorInitMemberDecl(CXXRecordDecl *ClassDecl,
4277 return tryLookupUnambiguousFieldDecl(ClassDecl, MemberOrBase);
4311 CXXRecordDecl *ClassDecl = Constructor->getParent();
4326 ClassDecl, SS, TemplateTypeTy, MemberOrBase)) {
4396 for (auto const &Base : ClassDecl->bases()) {
4412 MemInitializerValidatorCCC CCC(ClassDecl);
4415 CCC, CTK_ErrorRecovery, ClassDecl))) {
4427 if (FindBaseInitializer(*this, ClassDecl,
4470 return BuildBaseInitializer(BaseType, TInfo, Init, ClassDecl, EllipsisLoc);
4558 CXXRecordDecl *ClassDecl) {
4575 QualType(ClassDecl->getTypeForDecl(), 0));
4599 QualType(ClassDecl->getTypeForDecl(), 0));
4621 Expr *Init, CXXRecordDecl *ClassDecl,
4664 if (Context.hasSameUnqualifiedType(QualType(ClassDecl->getTypeForDecl(),0),
4666 return BuildDelegatingInitializer(BaseTInfo, Init, ClassDecl);
4668 FindBaseInitializer(*this, ClassDecl, BaseType, DirectBaseSpec,
4681 if (ClassDecl->hasAnyDependentBases())
4685 << BaseType << Context.getTypeDeclType(ClassDecl)
5245 CXXRecordDecl *ClassDecl = Constructor->getParent()->getDefinition();
5246 if (!ClassDecl)
5276 for (auto &I : ClassDecl->bases()) {
5282 for (auto &VBase : ClassDecl->vbases()) {
5289 if (ClassDecl->isAbstract()) {
5293 << VBase.getType() << ClassDecl;
5294 DiagnoseAbstractType(ClassDecl);
5298 } else if (!AnyErrors && !ClassDecl->isAbstract()) {
5317 for (auto &Base : ClassDecl->bases()) {
5339 for (auto *Mem : ClassDecl->decls()) {
5365 assert(ClassDecl->hasFlexibleArrayMember() &&
5459 const CXXRecordDecl *ClassDecl = Constructor->getParent();
5462 for (const auto &VBase : ClassDecl->vbases())
5466 for (const auto &Base : ClassDecl->bases()) {
5473 for (auto *Field : ClassDecl->fields()) {
5697 CXXRecordDecl *ClassDecl) {
5700 if (ClassDecl->isDependentContext() || ClassDecl->isUnion())
5709 for (auto *Field : ClassDecl->fields()) {
5747 bool VisitVirtualBases = !ClassDecl->isAbstract();
5753 CXXDestructorDecl *Dtor = ClassDecl->getDestructor();
5761 for (const auto &Base : ClassDecl->bases()) {
5789 Context.getTypeDeclType(ClassDecl));
5796 MarkVirtualBaseDestructorsReferenced(Location, ClassDecl,
5801 SourceLocation Location, CXXRecordDecl *ClassDecl,
5804 for (const auto &VBase : ClassDecl->vbases()) {
5824 ClassDecl->getLocation(), Dtor,
5826 << Context.getTypeDeclType(ClassDecl) << VBase.getType(),
5827 Context.getTypeDeclType(ClassDecl)) ==
5830 Context.getTypeDeclType(ClassDecl), VBase.getType(),
5831 diag::err_access_dtor_vbase, 0, ClassDecl->getLocation(),
5846 if (CXXRecordDecl *ClassDecl = Constructor->getParent();
5847 !ClassDecl || ClassDecl->isInvalidDecl()) {
7311 Sema &S, CXXRecordDecl *ClassDecl, CXXSpecialMemberKind CSM, unsigned Quals,
7324 Inherited->findConstructorForBase(ClassDecl, InheritedCtor).first;
7330 return ClassDecl->hasConstexprDefaultConstructor();
7332 return ClassDecl->hasConstexprDestructor();
7335 lookupCallFromSpecialMember(S, ClassDecl, CSM, Quals, ConstRHS);
7346 Sema &S, CXXRecordDecl *ClassDecl, CXXSpecialMemberKind CSM, bool ConstArg,
7365 return ClassDecl->defaultedDefaultConstructorIsConstexpr();
7381 return ClassDecl->defaultedDestructorIsConstexpr();
7394 if (Ctor && ClassDecl->isUnion())
7396 ? ClassDecl->hasInClassInitializer() ||
7397 !ClassDecl->hasVariantMembers()
7401 if (Ctor && ClassDecl->getNumVBases())
7406 if (!Ctor && !ClassDecl->isLiteral() && !S.getLangOpts().CPlusPlus23)
7414 for (const auto &B : ClassDecl->bases()) {
7433 for (const auto *F : ClassDecl->fields()) {
10503 void Sema::AddImplicitlyDeclaredMembersToClass(CXXRecordDecl *ClassDecl) {
10507 if (!ClassDecl->isDependentType()) {
10508 if (ClassDecl->needsImplicitDefaultConstructor()) {
10511 if (ClassDecl->hasInheritedConstructor())
10512 DeclareImplicitDefaultConstructor(ClassDecl);
10515 if (ClassDecl->needsImplicitCopyConstructor()) {
10521 if (ClassDecl->needsOverloadResolutionForCopyConstructor() ||
10522 ClassDecl->hasInheritedConstructor())
10523 DeclareImplicitCopyConstructor(ClassDecl);
10530 (ClassDecl->hasUserDeclaredMoveConstructor() ||
10531 ClassDecl->needsOverloadResolutionForMoveConstructor() ||
10532 ClassDecl->hasUserDeclaredMoveAssignment() ||
10533 ClassDecl->needsOverloadResolutionForMoveAssignment()))
10534 DeclareImplicitCopyConstructor(ClassDecl);
10538 ClassDecl->needsImplicitMoveConstructor()) {
10541 if (ClassDecl->needsOverloadResolutionForMoveConstructor() ||
10542 ClassDecl->hasInheritedConstructor())
10543 DeclareImplicitMoveConstructor(ClassDecl);
10546 if (ClassDecl->needsImplicitCopyAssignment()) {
10553 if (ClassDecl->isDynamicClass() ||
10554 ClassDecl->needsOverloadResolutionForCopyAssignment() ||
10555 ClassDecl->hasInheritedAssignment())
10556 DeclareImplicitCopyAssignment(ClassDecl);
10559 if (getLangOpts().CPlusPlus11 && ClassDecl->needsImplicitMoveAssignment()) {
10563 if (ClassDecl->isDynamicClass() ||
10564 ClassDecl->needsOverloadResolutionForMoveAssignment() ||
10565 ClassDecl->hasInheritedAssignment())
10566 DeclareImplicitMoveAssignment(ClassDecl);
10569 if (ClassDecl->needsImplicitDestructor()) {
10576 if (ClassDecl->isDynamicClass() ||
10577 ClassDecl->needsOverloadResolutionForDestructor())
10578 DeclareImplicitDestructor(ClassDecl);
10593 findImplicitlyDeclaredEqualityComparisons(Context, ClassDecl,
10596 DeclareImplicitEqualityComparison(ClassDecl, FD);
10809 CXXRecordDecl *ClassDecl
10811 if (!ClassDecl)
10824 QualType ClassTy = Context.getTagDeclType(ClassDecl);
11181 CXXRecordDecl *ClassDecl = cast<CXXRecordDecl>(Conversion->getDeclContext());
11192 = Context.getCanonicalType(Context.getTypeDeclType(ClassDecl));
13701 CXXRecordDecl *ClassDecl = MD->getParent();
13707 if (ClassDecl->isInvalidDecl())
13714 S.Context.getRecordType(ClassDecl),
13827 CXXRecordDecl *ClassDecl) {
13834 assert(ClassDecl->needsImplicitDefaultConstructor() &&
13837 DeclaringSpecialMember DSM(*this, ClassDecl,
13843 *this, ClassDecl, CXXSpecialMemberKind::DefaultConstructor, false);
13847 = Context.getCanonicalType(Context.getTypeDeclType(ClassDecl));
13848 SourceLocation ClassLoc = ClassDecl->getLocation();
13853 Context, ClassDecl, ClassLoc, NameInfo, /*Type*/ QualType(),
13866 ClassDecl, CXXSpecialMemberKind::DefaultConstructor, DefaultCon,
13872 DefaultCon->setTrivial(ClassDecl->hasTrivialDefaultConstructor());
13877 Scope *S = getScopeForContext(ClassDecl);
13886 ClassDecl->addDecl(DefaultCon);
13900 CXXRecordDecl *ClassDecl = Constructor->getParent();
13901 assert(ClassDecl && "DefineImplicitDefaultConstructor - invalid constructor");
13902 if (ClassDecl->isInvalidDecl()) {
13912 MarkVTableUsed(CurrentLocation, ClassDecl);
14037 CXXRecordDecl *ClassDecl = Constructor->getParent();
14052 MarkVTableUsed(CurrentLocation, ClassDecl);
14116 CXXDestructorDecl *Sema::DeclareImplicitDestructor(CXXRecordDecl *ClassDecl) {
14121 assert(ClassDecl->needsImplicitDestructor());
14123 DeclaringSpecialMember DSM(*this, ClassDecl,
14129 *this, ClassDecl, CXXSpecialMemberKind::Destructor, false);
14133 = Context.getCanonicalType(Context.getTypeDeclType(ClassDecl));
14134 SourceLocation ClassLoc = ClassDecl->getLocation();
14139 Context, ClassDecl, ClassLoc, NameInfo, QualType(), nullptr,
14152 ClassDecl, CXXSpecialMemberKind::Destructor, Destructor,
14158 Destructor->setTrivial(ClassDecl->hasTrivialDestructor());
14159 Destructor->setTrivialForCall(ClassDecl->hasAttr<TrivialABIAttr>() ||
14160 ClassDecl->hasTrivialDestructorForCall());
14165 Scope *S = getScopeForContext(ClassDecl);
14171 if (ClassDecl->isCompleteDefinition() &&
14178 ClassDecl->addDecl(Destructor);
14192 CXXRecordDecl *ClassDecl = Destructor->getParent();
14193 assert(ClassDecl && "DefineImplicitDestructor - invalid destructor");
14201 MarkVTableUsed(CurrentLocation, ClassDecl);
14230 CXXRecordDecl *ClassDecl = Destructor->getParent();
14233 assert(ClassDecl->getNumVBases() > 0 &&
14241 MarkVirtualBaseDestructorsReferenced(Destructor->getLocation(), ClassDecl);
14551 CXXRecordDecl *ClassDecl = cast<CXXRecordDecl>(RecordTy->getDecl());
14557 S.LookupQualifiedName(OpLookup, ClassDecl, false);
14744 CXXMethodDecl *Sema::DeclareImplicitCopyAssignment(CXXRecordDecl *ClassDecl) {
14749 assert(ClassDecl->needsImplicitCopyAssignment());
14751 DeclaringSpecialMember DSM(*this, ClassDecl,
14756 QualType ArgType = Context.getTypeDeclType(ClassDecl);
14763 bool Const = ClassDecl->implicitCopyAssignmentHasConstParam();
14770 *this, ClassDecl, CXXSpecialMemberKind::CopyAssignment, Const);
14775 SourceLocation ClassLoc = ClassDecl->getLocation();
14778 Context, ClassDecl, ClassLoc, NameInfo, QualType(),
14792 ClassDecl, CXXSpecialMemberKind::CopyAssignment, CopyAssignment,
14805 ClassDecl->needsOverloadResolutionForCopyAssignment()
14808 : ClassDecl->hasTrivialCopyAssignment());
14813 Scope *S = getScopeForContext(ClassDecl);
14818 ClassDecl->setImplicitCopyAssignmentIsDeleted();
14824 ClassDecl->addDecl(CopyAssignment);
14890 CXXRecordDecl *ClassDecl = CopyAssignOperator->getParent();
14891 if (ClassDecl->isInvalidDecl()) {
14964 for (auto &Base : ClassDecl->bases()) {
15003 for (auto *Field : ClassDecl->fields()) {
15016 Diag(ClassDecl->getLocation(), diag::err_uninitialized_member_for_assign)
15017 << Context.getTagDeclType(ClassDecl) << 0 << Field->getDeclName();
15026 Diag(ClassDecl->getLocation(), diag::err_uninitialized_member_for_assign)
15027 << Context.getTagDeclType(ClassDecl) << 1 << Field->getDeclName();
15039 assert(ClassDecl->hasFlexibleArrayMember() &&
15101 CXXMethodDecl *Sema::DeclareImplicitMoveAssignment(CXXRecordDecl *ClassDecl) {
15102 assert(ClassDecl->needsImplicitMoveAssignment());
15104 DeclaringSpecialMember DSM(*this, ClassDecl,
15112 QualType ArgType = Context.getTypeDeclType(ClassDecl);
15122 *this, ClassDecl, CXXSpecialMemberKind::MoveAssignment, false);
15127 SourceLocation ClassLoc = ClassDecl->getLocation();
15130 Context, ClassDecl, ClassLoc, NameInfo, QualType(),
15144 ClassDecl, CXXSpecialMemberKind::MoveAssignment, MoveAssignment,
15157 ClassDecl->needsOverloadResolutionForMoveAssignment()
15160 : ClassDecl->hasTrivialMoveAssignment());
15165 Scope *S = getScopeForContext(ClassDecl);
15170 ClassDecl->setImplicitMoveAssignmentIsDeleted();
15176 ClassDecl->addDecl(MoveAssignment);
15275 CXXRecordDecl *ClassDecl = MoveAssignOperator->getParent();
15276 if (ClassDecl->isInvalidDecl()) {
15291 checkMoveAssignmentForRepeatedMove(*this, ClassDecl, CurrentLocation);
15341 for (auto &Base : ClassDecl->bases()) {
15388 for (auto *Field : ClassDecl->fields()) {
15401 Diag(ClassDecl->getLocation(), diag::err_uninitialized_member_for_assign)
15402 << Context.getTagDeclType(ClassDecl) << 0 << Field->getDeclName();
15411 Diag(ClassDecl->getLocation(), diag::err_uninitialized_member_for_assign)
15412 << Context.getTagDeclType(ClassDecl) << 1 << Field->getDeclName();
15424 assert(ClassDecl->hasFlexibleArrayMember() &&
15492 CXXRecordDecl *ClassDecl) {
15496 assert(ClassDecl->needsImplicitCopyConstructor());
15498 DeclaringSpecialMember DSM(*this, ClassDecl,
15503 QualType ClassType = Context.getTypeDeclType(ClassDecl);
15507 bool Const = ClassDecl->implicitCopyConstructorHasConstParam();
15518 *this, ClassDecl, CXXSpecialMemberKind::CopyConstructor, Const);
15523 SourceLocation ClassLoc = ClassDecl->getLocation();
15529 Context, ClassDecl, ClassLoc, NameInfo, QualType(), /*TInfo=*/nullptr,
15542 ClassDecl, CXXSpecialMemberKind::CopyConstructor, CopyConstructor,
15550 if (inTemplateInstantiation() && ClassDecl->isLambda())
15561 ClassDecl->needsOverloadResolutionForCopyConstructor()
15564 : ClassDecl->hasTrivialCopyConstructor());
15567 ClassDecl->hasAttr<TrivialABIAttr>() ||
15568 (ClassDecl->needsOverloadResolutionForCopyConstructor()
15572 : ClassDecl->hasTrivialCopyConstructorForCall()));
15577 Scope *S = getScopeForContext(ClassDecl);
15582 ClassDecl->setImplicitCopyConstructorIsDeleted();
15588 ClassDecl->addDecl(CopyConstructor);
15603 CXXRecordDecl *ClassDecl = CopyConstructor->getParent();
15604 assert(ClassDecl && "DefineImplicitCopyConstructor - invalid constructor");
15612 MarkVTableUsed(CurrentLocation, ClassDecl);
15643 CXXRecordDecl *ClassDecl) {
15644 assert(ClassDecl->needsImplicitMoveConstructor());
15646 DeclaringSpecialMember DSM(*this, ClassDecl,
15651 QualType ClassType = Context.getTypeDeclType(ClassDecl);
15662 *this, ClassDecl, CXXSpecialMemberKind::MoveConstructor, false);
15667 SourceLocation ClassLoc = ClassDecl->getLocation();
15674 Context, ClassDecl, ClassLoc, NameInfo, QualType(), /*TInfo=*/nullptr,
15687 ClassDecl, CXXSpecialMemberKind::MoveConstructor, MoveConstructor,
15700 ClassDecl->needsOverloadResolutionForMoveConstructor()
15703 : ClassDecl->hasTrivialMoveConstructor());
15706 ClassDecl->hasAttr<TrivialABIAttr>() ||
15707 (ClassDecl->needsOverloadResolutionForMoveConstructor()
15711 : ClassDecl->hasTrivialMoveConstructorForCall()));
15716 Scope *S = getScopeForContext(ClassDecl);
15721 ClassDecl->setImplicitMoveConstructorIsDeleted();
15727 ClassDecl->addDecl(MoveConstructor);
15742 CXXRecordDecl *ClassDecl = MoveConstructor->getParent();
15743 assert(ClassDecl && "DefineImplicitMoveConstructor - invalid constructor");
15751 MarkVTableUsed(CurrentLocation, ClassDecl);
16011 CXXRecordDecl *ClassDecl = cast<CXXRecordDecl>(Record->getDecl());
16012 if (ClassDecl->isInvalidDecl()) return;
16013 if (ClassDecl->hasIrrelevantDestructor()) return;
16014 if (ClassDecl->isDependentContext()) return;
16019 CXXDestructorDecl *Destructor = LookupDestructor(ClassDecl);