reference, declaration → definition definition → references, declarations, derived classes, virtual overrides reference to multiple definitions → definitions unreferenced |
6293 if (!Record) 6296 if (Record->isAbstract() && !Record->isInvalidDecl()) { 6296 if (Record->isAbstract() && !Record->isInvalidDecl()) { 6297 AbstractUsageInfo Info(*this, Record); 6298 CheckAbstractClassUsage(Info, Record); 6304 if (!Record->isInvalidDecl() && !Record->isDependentType() && 6304 if (!Record->isInvalidDecl() && !Record->isDependentType() && 6305 !Record->isAggregate() && !Record->hasUserDeclaredConstructor() && 6305 !Record->isAggregate() && !Record->hasUserDeclaredConstructor() && 6306 !Record->isLambda()) { 6308 for (const auto *F : Record->fields()) { 6315 Diag(Record->getLocation(), diag::warn_no_constructor_for_refconst) 6316 << Record->getTagKind() << Record; 6316 << Record->getTagKind() << Record; 6327 if (Record->getIdentifier()) { 6336 DeclContext::lookup_result R = Record->lookup(Record->getDeclName()); 6336 DeclContext::lookup_result R = Record->lookup(Record->getDeclName()); 6341 Record->hasUserDeclaredConstructor()) || 6351 if (Record->isPolymorphic() && !Record->isDependentType()) { 6351 if (Record->isPolymorphic() && !Record->isDependentType()) { 6352 CXXDestructorDecl *dtor = Record->getDestructor(); 6354 !Record->hasAttr<FinalAttr>()) 6355 Diag(dtor ? dtor->getLocation() : Record->getLocation(), 6356 diag::warn_non_virtual_dtor) << Context.getRecordType(Record); 6359 if (Record->isAbstract()) { 6360 if (FinalAttr *FA = Record->getAttr<FinalAttr>()) { 6361 Diag(Record->getLocation(), diag::warn_abstract_final_class) 6363 DiagnoseAbstractType(Record); 6368 if (!Record->hasAttr<FinalAttr>()) { 6369 if (const CXXDestructorDecl *dtor = Record->getDestructor()) { 6374 getLocForEndOfToken(Record->getLocation()), 6376 Diag(Record->getLocation(), 6378 << Context.getRecordType(Record) << FA->isSpelledAsSealed(); 6384 if (Record->hasAttr<TrivialABIAttr>()) 6385 checkIllFormedTrivialABIStruct(*Record); 6389 bool HasTrivialABI = Record->hasAttr<TrivialABIAttr>(); 6392 Record->setHasTrivialSpecialMemberForCall(); 6406 Record->finishedDefaultedOrDeletedMember(M); 6410 Record->setTrivialForCallFlags(M); 6419 Record->setTrivialForCallFlags(M); 6445 if (!Record->isDependentType()) { 6451 if (CXXDestructorDecl *Dtor = Record->getDestructor()) 6454 for (auto *M : Record->methods()) { 6473 for (auto *M : Record->methods()) 6478 if (!Record->isDependentType()) { 6479 for (FriendDecl *D : Record->friends()) { 6495 if (Record->isMsStruct(Context) && 6496 (Record->isPolymorphic() || Record->getNumBases())) { 6496 (Record->isPolymorphic() || Record->getNumBases())) { 6497 Diag(Record->getLocation(), diag::warn_cxx_ms_struct); 6500 checkClassLevelDLLAttribute(Record); 6501 checkClassLevelCodeSegAttribute(Record); 6507 bool CanPass = canPassInRegisters(*this, Record, CCK); 6511 if (Record->getArgPassingRestrictions() != RecordDecl::APK_CanNeverPassInRegs) 6512 Record->setArgPassingRestrictions(CanPass 6521 Record->setParamDestroyedInCallee(true); 6522 else if (Record->hasNonTrivialDestructor()) 6523 Record->setParamDestroyedInCallee(CanPass); 6528 MarkVTableUsed(Record->getInnerLocStart(), Record); 6528 MarkVTableUsed(Record->getInnerLocStart(), Record);