Lines Matching defs:Destructor

6698       return CXXSpecialMemberKind::Destructor;
6748 case CXXSpecialMemberKind::Destructor:
7091 CSM == CXXSpecialMemberKind::Destructor) &&
7103 CSM == CXXSpecialMemberKind::Destructor))
7281 CSM == CXXSpecialMemberKind::Destructor)
7398 if (CSM == CXXSpecialMemberKind::Destructor)
7447 case CXXSpecialMemberKind::Destructor:
7661 CSM == CXXSpecialMemberKind::Destructor)
9250 case CXXSpecialMemberKind::Destructor:
9500 S.LookupSpecialMember(Class, CXXSpecialMemberKind::Destructor, false,
9724 CSM != CXXSpecialMemberKind::Destructor && RD->isAnonymousStructOrUnion())
9785 if (CSM == CXXSpecialMemberKind::Destructor && MD->isVirtual()) {
9899 case CXXSpecialMemberKind::Destructor:
10142 case CXXSpecialMemberKind::Destructor:
10241 if (CSM == CXXSpecialMemberKind::Destructor && MD->isVirtual()) {
10250 if (CSM != CXXSpecialMemberKind::Destructor &&
10938 bool Sema::CheckDestructor(CXXDestructorDecl *Destructor) {
10939 CXXRecordDecl *RD = Destructor->getParent();
10941 if (!Destructor->getOperatorDelete() && Destructor->isVirtual()) {
10944 if (!Destructor->isImplicit())
10945 Loc = Destructor->getLocation();
10963 ContextRAII SwitchContext(*this, Destructor);
10981 Destructor->setOperatorDelete(OperatorDelete, ThisArg);
14223 CXXSpecialMemberKind::Destructor);
14228 *this, ClassDecl, CXXSpecialMemberKind::Destructor, false);
14237 CXXDestructorDecl *Destructor = CXXDestructorDecl::Create(
14244 Destructor->setAccess(AS_public);
14245 Destructor->setDefaulted();
14247 setupImplicitSpecialMemberType(Destructor, Context.VoidTy, {});
14251 ClassDecl, CXXSpecialMemberKind::Destructor, Destructor,
14257 Destructor->setTrivial(ClassDecl->hasTrivialDestructor());
14258 Destructor->setTrivialForCall(ClassDecl->hasAttr<TrivialABIAttr>() ||
14265 CheckImplicitSpecialMemberDeclaration(S, Destructor);
14271 ShouldDeleteSpecialMember(Destructor, CXXSpecialMemberKind::Destructor))
14272 SetDeclDeleted(Destructor, ClassLoc);
14276 PushOnScopeChains(Destructor, S, false);
14277 ClassDecl->addDecl(Destructor);
14279 return Destructor;
14283 CXXDestructorDecl *Destructor) {
14284 assert((Destructor->isDefaulted() &&
14285 !Destructor->doesThisDeclarationHaveABody() &&
14286 !Destructor->isDeleted()) &&
14288 if (Destructor->willHaveBody() || Destructor->isInvalidDecl())
14291 CXXRecordDecl *ClassDecl = Destructor->getParent();
14294 SynthesizedFunctionScope Scope(*this, Destructor);
14299 Destructor->getType()->castAs<FunctionProtoType>());
14305 MarkBaseAndMemberDestructorsReferenced(Destructor->getLocation(),
14306 Destructor->getParent());
14308 if (CheckDestructor(Destructor)) {
14309 Destructor->setInvalidDecl();
14313 SourceLocation Loc = Destructor->getEndLoc().isValid()
14314 ? Destructor->getEndLoc()
14315 : Destructor->getLocation();
14316 Destructor->setBody(new (Context) CompoundStmt(Loc));
14317 Destructor->markUsed(Context);
14320 L->CompletedImplicitDefinition(Destructor);
14325 CXXDestructorDecl *Destructor) {
14326 if (Destructor->isInvalidDecl())
14329 CXXRecordDecl *ClassDecl = Destructor->getParent();
14335 SynthesizedFunctionScope Scope(*this, Destructor);
14340 MarkVirtualBaseDestructorsReferenced(Destructor->getLocation(), ClassDecl);
14385 void Sema::AdjustDestructorExceptionSpec(CXXDestructorDecl *Destructor) {
14389 if (Destructor->isDependentContext())
14396 const auto *DtorType = Destructor->getType()->castAs<FunctionProtoType>();
14405 EPI.ExceptionSpec.SourceDecl = Destructor;
14406 Destructor->setType(Context.getFunctionType(Context.VoidTy, {}, EPI));
16117 CXXDestructorDecl *Destructor = LookupDestructor(ClassDecl);
16121 if (!Destructor)
16127 MarkFunctionReferenced(VD->getLocation(), Destructor);
16128 CheckDestructorAccess(VD->getLocation(), Destructor,
16131 DiagnoseUseOfDecl(Destructor, VD->getLocation());
16134 if (Destructor->isTrivial()) return;
16138 if (Destructor->isConstexpr()) {