• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /freebsd-13-stable/contrib/llvm-project/clang/lib/Sema/

Lines Matching refs:ClassDecl

2745 void Sema::ActOnBaseSpecifiers(Decl *ClassDecl,
2747 if (!ClassDecl || Bases.empty())
2750 AdjustDeclIfTemplate(ClassDecl);
2751 AttachBaseSpecifiers(cast<CXXRecordDecl>(ClassDecl), Bases);
3975 CXXRecordDecl *ClassDecl,
3981 for (const auto &Base : ClassDecl->bases()) {
3999 if (SemaRef.IsDerivedFrom(ClassDecl->getLocation(),
4000 SemaRef.Context.getTypeDeclType(ClassDecl),
4055 explicit MemInitializerValidatorCCC(CXXRecordDecl *ClassDecl)
4056 : ClassDecl(ClassDecl) {}
4061 return Member->getDeclContext()->getRedeclContext()->Equals(ClassDecl);
4072 CXXRecordDecl *ClassDecl;
4077 ValueDecl *Sema::tryLookupCtorInitMemberDecl(CXXRecordDecl *ClassDecl,
4083 DeclContext::lookup_result Result = ClassDecl->lookup(MemberOrBase);
4124 CXXRecordDecl *ClassDecl = Constructor->getParent();
4139 ClassDecl, SS, TemplateTypeTy, MemberOrBase)) {
4202 MemInitializerValidatorCCC CCC(ClassDecl);
4205 CCC, CTK_ErrorRecovery, ClassDecl))) {
4217 if (FindBaseInitializer(*this, ClassDecl,
4263 return BuildBaseInitializer(BaseType, TInfo, Init, ClassDecl, EllipsisLoc);
4344 CXXRecordDecl *ClassDecl) {
4361 QualType(ClassDecl->getTypeForDecl(), 0));
4401 Expr *Init, CXXRecordDecl *ClassDecl,
4440 if (Context.hasSameUnqualifiedType(QualType(ClassDecl->getTypeForDecl(),0),
4442 return BuildDelegatingInitializer(BaseTInfo, Init, ClassDecl);
4444 FindBaseInitializer(*this, ClassDecl, BaseType, DirectBaseSpec,
4457 if (ClassDecl->hasAnyDependentBases())
4461 << BaseType << Context.getTypeDeclType(ClassDecl)
5017 CXXRecordDecl *ClassDecl = Constructor->getParent()->getDefinition();
5018 if (!ClassDecl)
5048 for (auto &I : ClassDecl->bases()) {
5054 for (auto &VBase : ClassDecl->vbases()) {
5061 if (ClassDecl->isAbstract()) {
5065 << VBase.getType() << ClassDecl;
5066 DiagnoseAbstractType(ClassDecl);
5070 } else if (!AnyErrors && !ClassDecl->isAbstract()) {
5089 for (auto &Base : ClassDecl->bases()) {
5111 for (auto *Mem : ClassDecl->decls()) {
5137 assert(ClassDecl->hasFlexibleArrayMember() &&
5217 const CXXRecordDecl *ClassDecl = Constructor->getParent();
5220 for (const auto &VBase : ClassDecl->vbases())
5224 for (const auto &Base : ClassDecl->bases()) {
5231 for (auto *Field : ClassDecl->fields()) {
5418 CXXRecordDecl *ClassDecl) {
5421 if (ClassDecl->isDependentContext() || ClassDecl->isUnion())
5430 for (auto *Field : ClassDecl->fields()) {
5466 bool VisitVirtualBases = !ClassDecl->isAbstract();
5472 CXXDestructorDecl *Dtor = ClassDecl->getDestructor();
5480 for (const auto &Base : ClassDecl->bases()) {
5505 Context.getTypeDeclType(ClassDecl));
5512 MarkVirtualBaseDestructorsReferenced(Location, ClassDecl,
5517 SourceLocation Location, CXXRecordDecl *ClassDecl,
5520 for (const auto &VBase : ClassDecl->vbases()) {
5538 ClassDecl->getLocation(), Dtor,
5540 << Context.getTypeDeclType(ClassDecl) << VBase.getType(),
5541 Context.getTypeDeclType(ClassDecl)) ==
5544 Context.getTypeDeclType(ClassDecl), VBase.getType(),
5545 diag::err_access_dtor_vbase, 0, ClassDecl->getLocation(),
6948 specialMemberIsConstexpr(Sema &S, CXXRecordDecl *ClassDecl,
6958 Inherited->findConstructorForBase(ClassDecl, InheritedCtor).first;
6964 return ClassDecl->hasConstexprDefaultConstructor();
6966 return ClassDecl->hasConstexprDestructor();
6969 lookupCallFromSpecialMember(S, ClassDecl, CSM, Quals, ConstRHS);
6980 Sema &S, CXXRecordDecl *ClassDecl, Sema::CXXSpecialMember CSM,
6999 return ClassDecl->defaultedDefaultConstructorIsConstexpr();
7015 return ClassDecl->defaultedDestructorIsConstexpr();
7028 if (Ctor && ClassDecl->isUnion())
7030 ? ClassDecl->hasInClassInitializer() ||
7031 !ClassDecl->hasVariantMembers()
7035 if (Ctor && ClassDecl->getNumVBases())
7040 if (!Ctor && !ClassDecl->isLiteral())
7047 for (const auto &B : ClassDecl->bases()) {
7064 for (const auto *F : ClassDecl->fields()) {
9855 void Sema::AddImplicitlyDeclaredMembersToClass(CXXRecordDecl *ClassDecl) {
9859 if (!ClassDecl->isDependentType()) {
9860 if (ClassDecl->needsImplicitDefaultConstructor()) {
9863 if (ClassDecl->hasInheritedConstructor())
9864 DeclareImplicitDefaultConstructor(ClassDecl);
9867 if (ClassDecl->needsImplicitCopyConstructor()) {
9873 if (ClassDecl->needsOverloadResolutionForCopyConstructor() ||
9874 ClassDecl->hasInheritedConstructor())
9875 DeclareImplicitCopyConstructor(ClassDecl);
9882 (ClassDecl->hasUserDeclaredMoveConstructor() ||
9883 ClassDecl->needsOverloadResolutionForMoveConstructor() ||
9884 ClassDecl->hasUserDeclaredMoveAssignment() ||
9885 ClassDecl->needsOverloadResolutionForMoveAssignment()))
9886 DeclareImplicitCopyConstructor(ClassDecl);
9890 ClassDecl->needsImplicitMoveConstructor()) {
9893 if (ClassDecl->needsOverloadResolutionForMoveConstructor() ||
9894 ClassDecl->hasInheritedConstructor())
9895 DeclareImplicitMoveConstructor(ClassDecl);
9898 if (ClassDecl->needsImplicitCopyAssignment()) {
9905 if (ClassDecl->isDynamicClass() ||
9906 ClassDecl->needsOverloadResolutionForCopyAssignment() ||
9907 ClassDecl->hasInheritedAssignment())
9908 DeclareImplicitCopyAssignment(ClassDecl);
9911 if (getLangOpts().CPlusPlus11 && ClassDecl->needsImplicitMoveAssignment()) {
9915 if (ClassDecl->isDynamicClass() ||
9916 ClassDecl->needsOverloadResolutionForMoveAssignment() ||
9917 ClassDecl->hasInheritedAssignment())
9918 DeclareImplicitMoveAssignment(ClassDecl);
9921 if (ClassDecl->needsImplicitDestructor()) {
9928 if (ClassDecl->isDynamicClass() ||
9929 ClassDecl->needsOverloadResolutionForDestructor())
9930 DeclareImplicitDestructor(ClassDecl);
9945 findImplicitlyDeclaredEqualityComparisons(Context, ClassDecl,
9948 DeclareImplicitEqualityComparison(ClassDecl, FD);
10187 CXXRecordDecl *ClassDecl
10189 if (!ClassDecl)
10202 QualType ClassTy = Context.getTagDeclType(ClassDecl);
10567 CXXRecordDecl *ClassDecl = cast<CXXRecordDecl>(Conversion->getDeclContext());
10578 = Context.getCanonicalType(Context.getTypeDeclType(ClassDecl));
12795 CXXRecordDecl *ClassDecl = MD->getParent();
12801 if (ClassDecl->isInvalidDecl())
12808 S.Context.getRecordType(ClassDecl),
12910 CXXRecordDecl *ClassDecl) {
12917 assert(ClassDecl->needsImplicitDefaultConstructor() &&
12920 DeclaringSpecialMember DSM(*this, ClassDecl, CXXDefaultConstructor);
12924 bool Constexpr = defaultedSpecialMemberIsConstexpr(*this, ClassDecl,
12930 = Context.getCanonicalType(Context.getTypeDeclType(ClassDecl));
12931 SourceLocation ClassLoc = ClassDecl->getLocation();
12936 Context, ClassDecl, ClassLoc, NameInfo, /*Type*/ QualType(),
12944 inferCUDATargetForImplicitSpecialMember(ClassDecl, CXXDefaultConstructor,
12954 DefaultCon->setTrivial(ClassDecl->hasTrivialDefaultConstructor());
12959 Scope *S = getScopeForContext(ClassDecl);
12967 ClassDecl->addDecl(DefaultCon);
12981 CXXRecordDecl *ClassDecl = Constructor->getParent();
12982 assert(ClassDecl && "DefineImplicitDefaultConstructor - invalid constructor");
12990 MarkVTableUsed(CurrentLocation, ClassDecl);
13112 CXXRecordDecl *ClassDecl = Constructor->getParent();
13127 MarkVTableUsed(CurrentLocation, ClassDecl);
13191 CXXDestructorDecl *Sema::DeclareImplicitDestructor(CXXRecordDecl *ClassDecl) {
13196 assert(ClassDecl->needsImplicitDestructor());
13198 DeclaringSpecialMember DSM(*this, ClassDecl, CXXDestructor);
13202 bool Constexpr = defaultedSpecialMemberIsConstexpr(*this, ClassDecl,
13208 = Context.getCanonicalType(Context.getTypeDeclType(ClassDecl));
13209 SourceLocation ClassLoc = ClassDecl->getLocation();
13214 CXXDestructorDecl::Create(Context, ClassDecl, ClassLoc, NameInfo,
13222 inferCUDATargetForImplicitSpecialMember(ClassDecl, CXXDestructor,
13232 Destructor->setTrivial(ClassDecl->hasTrivialDestructor());
13233 Destructor->setTrivialForCall(ClassDecl->hasAttr<TrivialABIAttr>() ||
13234 ClassDecl->hasTrivialDestructorForCall());
13239 Scope *S = getScopeForContext(ClassDecl);
13245 if (ClassDecl->isCompleteDefinition() &&
13252 ClassDecl->addDecl(Destructor);
13266 CXXRecordDecl *ClassDecl = Destructor->getParent();
13267 assert(ClassDecl && "DefineImplicitDestructor - invalid destructor");
13275 MarkVTableUsed(CurrentLocation, ClassDecl);
13304 CXXRecordDecl *ClassDecl = Destructor->getParent();
13307 assert(ClassDecl->getNumVBases() > 0 &&
13315 MarkVirtualBaseDestructorsReferenced(Destructor->getLocation(), ClassDecl);
13626 CXXRecordDecl *ClassDecl = cast<CXXRecordDecl>(RecordTy->getDecl());
13632 S.LookupQualifiedName(OpLookup, ClassDecl, false);
13818 CXXMethodDecl *Sema::DeclareImplicitCopyAssignment(CXXRecordDecl *ClassDecl) {
13823 assert(ClassDecl->needsImplicitCopyAssignment());
13825 DeclaringSpecialMember DSM(*this, ClassDecl, CXXCopyAssignment);
13829 QualType ArgType = Context.getTypeDeclType(ClassDecl);
13834 bool Const = ClassDecl->implicitCopyAssignmentHasConstParam();
13840 bool Constexpr = defaultedSpecialMemberIsConstexpr(*this, ClassDecl,
13847 SourceLocation ClassLoc = ClassDecl->getLocation();
13850 Context, ClassDecl, ClassLoc, NameInfo, QualType(),
13859 inferCUDATargetForImplicitSpecialMember(ClassDecl, CXXCopyAssignment,
13876 ClassDecl->needsOverloadResolutionForCopyAssignment()
13878 : ClassDecl->hasTrivialCopyAssignment());
13883 Scope *S = getScopeForContext(ClassDecl);
13887 ClassDecl->setImplicitCopyAssignmentIsDeleted();
13893 ClassDecl->addDecl(CopyAssignment);
13955 CXXRecordDecl *ClassDecl = CopyAssignOperator->getParent();
13956 if (ClassDecl->isInvalidDecl()) {
14012 for (auto &Base : ClassDecl->bases()) {
14051 for (auto *Field : ClassDecl->fields()) {
14064 Diag(ClassDecl->getLocation(), diag::err_uninitialized_member_for_assign)
14065 << Context.getTagDeclType(ClassDecl) << 0 << Field->getDeclName();
14074 Diag(ClassDecl->getLocation(), diag::err_uninitialized_member_for_assign)
14075 << Context.getTagDeclType(ClassDecl) << 1 << Field->getDeclName();
14087 assert(ClassDecl->hasFlexibleArrayMember() &&
14148 CXXMethodDecl *Sema::DeclareImplicitMoveAssignment(CXXRecordDecl *ClassDecl) {
14149 assert(ClassDecl->needsImplicitMoveAssignment());
14151 DeclaringSpecialMember DSM(*this, ClassDecl, CXXMoveAssignment);
14158 QualType ArgType = Context.getTypeDeclType(ClassDecl);
14165 bool Constexpr = defaultedSpecialMemberIsConstexpr(*this, ClassDecl,
14172 SourceLocation ClassLoc = ClassDecl->getLocation();
14175 Context, ClassDecl, ClassLoc, NameInfo, QualType(),
14184 inferCUDATargetForImplicitSpecialMember(ClassDecl, CXXMoveAssignment,
14204 ClassDecl->needsOverloadResolutionForMoveAssignment()
14206 : ClassDecl->hasTrivialMoveAssignment());
14211 Scope *S = getScopeForContext(ClassDecl);
14215 ClassDecl->setImplicitMoveAssignmentIsDeleted();
14221 ClassDecl->addDecl(MoveAssignment);
14321 CXXRecordDecl *ClassDecl = MoveAssignOperator->getParent();
14322 if (ClassDecl->isInvalidDecl()) {
14337 checkMoveAssignmentForRepeatedMove(*this, ClassDecl, CurrentLocation);
14372 for (auto &Base : ClassDecl->bases()) {
14420 for (auto *Field : ClassDecl->fields()) {
14433 Diag(ClassDecl->getLocation(), diag::err_uninitialized_member_for_assign)
14434 << Context.getTagDeclType(ClassDecl) << 0 << Field->getDeclName();
14443 Diag(ClassDecl->getLocation(), diag::err_uninitialized_member_for_assign)
14444 << Context.getTagDeclType(ClassDecl) << 1 << Field->getDeclName();
14456 assert(ClassDecl->hasFlexibleArrayMember() &&
14522 CXXRecordDecl *ClassDecl) {
14526 assert(ClassDecl->needsImplicitCopyConstructor());
14528 DeclaringSpecialMember DSM(*this, ClassDecl, CXXCopyConstructor);
14532 QualType ClassType = Context.getTypeDeclType(ClassDecl);
14534 bool Const = ClassDecl->implicitCopyConstructorHasConstParam();
14544 bool Constexpr = defaultedSpecialMemberIsConstexpr(*this, ClassDecl,
14551 SourceLocation ClassLoc = ClassDecl->getLocation();
14557 Context, ClassDecl, ClassLoc, NameInfo, QualType(), /*TInfo=*/nullptr,
14566 inferCUDATargetForImplicitSpecialMember(ClassDecl, CXXCopyConstructor,
14583 ClassDecl->needsOverloadResolutionForCopyConstructor()
14585 : ClassDecl->hasTrivialCopyConstructor());
14588 ClassDecl->hasAttr<TrivialABIAttr>() ||
14589 (ClassDecl->needsOverloadResolutionForCopyConstructor()
14592 : ClassDecl->hasTrivialCopyConstructorForCall()));
14597 Scope *S = getScopeForContext(ClassDecl);
14601 ClassDecl->setImplicitCopyConstructorIsDeleted();
14607 ClassDecl->addDecl(CopyConstructor);
14622 CXXRecordDecl *ClassDecl = CopyConstructor->getParent();
14623 assert(ClassDecl && "DefineImplicitCopyConstructor - invalid constructor");
14631 MarkVTableUsed(CurrentLocation, ClassDecl);
14661 CXXRecordDecl *ClassDecl) {
14662 assert(ClassDecl->needsImplicitMoveConstructor());
14664 DeclaringSpecialMember DSM(*this, ClassDecl, CXXMoveConstructor);
14668 QualType ClassType = Context.getTypeDeclType(ClassDecl);
14676 bool Constexpr = defaultedSpecialMemberIsConstexpr(*this, ClassDecl,
14683 SourceLocation ClassLoc = ClassDecl->getLocation();
14690 Context, ClassDecl, ClassLoc, NameInfo, QualType(), /*TInfo=*/nullptr,
14699 inferCUDATargetForImplicitSpecialMember(ClassDecl, CXXMoveConstructor,
14716 ClassDecl->needsOverloadResolutionForMoveConstructor()
14718 : ClassDecl->hasTrivialMoveConstructor());
14721 ClassDecl->hasAttr<TrivialABIAttr>() ||
14722 (ClassDecl->needsOverloadResolutionForMoveConstructor()
14725 : ClassDecl->hasTrivialMoveConstructorForCall()));
14730 Scope *S = getScopeForContext(ClassDecl);
14734 ClassDecl->setImplicitMoveConstructorIsDeleted();
14740 ClassDecl->addDecl(MoveConstructor);
14755 CXXRecordDecl *ClassDecl = MoveConstructor->getParent();
14756 assert(ClassDecl && "DefineImplicitMoveConstructor - invalid constructor");
14764 MarkVTableUsed(CurrentLocation, ClassDecl);
15095 CXXRecordDecl *ClassDecl = cast<CXXRecordDecl>(Record->getDecl());
15096 if (ClassDecl->isInvalidDecl()) return;
15097 if (ClassDecl->hasIrrelevantDestructor()) return;
15098 if (ClassDecl->isDependentContext()) return;
15103 CXXDestructorDecl *Destructor = LookupDestructor(ClassDecl);