Lines Matching defs:D
287 void AddDecl(const Decl *D) {
288 Hash.AddBoolean(D);
289 if (D) {
290 Hash.AddDecl(D);
298 void Visit(const Decl *D) {
299 ID.AddInteger(D->getKind());
300 Inherited::Visit(D);
303 void VisitNamedDecl(const NamedDecl *D) {
304 Hash.AddDeclarationName(D->getDeclName());
305 Inherited::VisitNamedDecl(D);
308 void VisitValueDecl(const ValueDecl *D) {
309 if (auto *DD = dyn_cast<DeclaratorDecl>(D); DD && DD->getTypeSourceInfo())
312 Inherited::VisitValueDecl(D);
315 void VisitVarDecl(const VarDecl *D) {
316 Hash.AddBoolean(D->isStaticLocal());
317 Hash.AddBoolean(D->isConstexpr());
318 const bool HasInit = D->hasInit();
321 AddStmt(D->getInit());
323 Inherited::VisitVarDecl(D);
326 void VisitParmVarDecl(const ParmVarDecl *D) {
328 Inherited::VisitParmVarDecl(D);
331 void VisitAccessSpecDecl(const AccessSpecDecl *D) {
332 ID.AddInteger(D->getAccess());
333 Inherited::VisitAccessSpecDecl(D);
336 void VisitStaticAssertDecl(const StaticAssertDecl *D) {
337 AddStmt(D->getAssertExpr());
338 AddStmt(D->getMessage());
340 Inherited::VisitStaticAssertDecl(D);
343 void VisitFieldDecl(const FieldDecl *D) {
344 const bool IsBitfield = D->isBitField();
348 AddStmt(D->getBitWidth());
351 Hash.AddBoolean(D->isMutable());
352 AddStmt(D->getInClassInitializer());
354 Inherited::VisitFieldDecl(D);
357 void VisitObjCIvarDecl(const ObjCIvarDecl *D) {
358 ID.AddInteger(D->getCanonicalAccessControl());
359 Inherited::VisitObjCIvarDecl(D);
362 void VisitObjCPropertyDecl(const ObjCPropertyDecl *D) {
363 ID.AddInteger(D->getPropertyAttributes());
364 ID.AddInteger(D->getPropertyImplementation());
365 AddQualType(D->getTypeSourceInfo()->getType());
366 AddDecl(D);
368 Inherited::VisitObjCPropertyDecl(D);
371 void VisitFunctionDecl(const FunctionDecl *D) {
373 ID.AddInteger(D->getODRHash());
375 Inherited::VisitFunctionDecl(D);
378 void VisitCXXMethodDecl(const CXXMethodDecl *D) {
381 Inherited::VisitCXXMethodDecl(D);
442 void VisitTypedefNameDecl(const TypedefNameDecl *D) {
443 AddQualType(D->getUnderlyingType());
445 Inherited::VisitTypedefNameDecl(D);
448 void VisitTypedefDecl(const TypedefDecl *D) {
449 Inherited::VisitTypedefDecl(D);
452 void VisitTypeAliasDecl(const TypeAliasDecl *D) {
453 Inherited::VisitTypeAliasDecl(D);
456 void VisitFriendDecl(const FriendDecl *D) {
457 TypeSourceInfo *TSI = D->getFriendType();
462 AddDecl(D->getFriendDecl());
466 void VisitTemplateTypeParmDecl(const TemplateTypeParmDecl *D) {
469 D->hasDefaultArgument() && !D->defaultArgumentWasInherited();
472 AddTemplateArgument(D->getDefaultArgument().getArgument());
474 Hash.AddBoolean(D->isParameterPack());
476 const TypeConstraint *TC = D->getTypeConstraint();
481 Inherited::VisitTemplateTypeParmDecl(D);
484 void VisitNonTypeTemplateParmDecl(const NonTypeTemplateParmDecl *D) {
487 D->hasDefaultArgument() && !D->defaultArgumentWasInherited();
490 AddTemplateArgument(D->getDefaultArgument().getArgument());
492 Hash.AddBoolean(D->isParameterPack());
494 Inherited::VisitNonTypeTemplateParmDecl(D);
497 void VisitTemplateTemplateParmDecl(const TemplateTemplateParmDecl *D) {
500 D->hasDefaultArgument() && !D->defaultArgumentWasInherited();
503 AddTemplateArgument(D->getDefaultArgument().getArgument());
505 Hash.AddBoolean(D->isParameterPack());
507 Inherited::VisitTemplateTemplateParmDecl(D);
510 void VisitTemplateDecl(const TemplateDecl *D) {
511 Hash.AddTemplateParameterList(D->getTemplateParameters());
513 Inherited::VisitTemplateDecl(D);
516 void VisitRedeclarableTemplateDecl(const RedeclarableTemplateDecl *D) {
517 Hash.AddBoolean(D->isMemberSpecialization());
518 Inherited::VisitRedeclarableTemplateDecl(D);
521 void VisitFunctionTemplateDecl(const FunctionTemplateDecl *D) {
522 AddDecl(D->getTemplatedDecl());
523 ID.AddInteger(D->getTemplatedDecl()->getODRHash());
524 Inherited::VisitFunctionTemplateDecl(D);
527 void VisitEnumConstantDecl(const EnumConstantDecl *D) {
528 AddStmt(D->getInitExpr());
529 Inherited::VisitEnumConstantDecl(D);
536 bool ODRHash::isSubDeclToBeProcessed(const Decl *D, const DeclContext *Parent) {
537 if (D->isImplicit()) return false;
538 if (D->getDeclContext() != Parent) return false;
540 switch (D->getKind()) {
562 void ODRHash::AddSubDecl(const Decl *D) {
563 assert(D && "Expecting non-null pointer.");
565 ODRDeclVisitor(ID, *this).Visit(D);
806 void ODRHash::AddDecl(const Decl *D) {
807 assert(D && "Expecting non-null pointer.");
808 D = D->getCanonicalDecl();
810 const NamedDecl *ND = dyn_cast<NamedDecl>(D);
813 ID.AddInteger(D->getKind());
820 dyn_cast<ClassTemplateSpecializationDecl>(D);
849 void AddDecl(const Decl *D) {
850 Hash.AddBoolean(D);
851 if (D) {
852 Hash.AddDecl(D);
893 const TypedefNameDecl *D = TypedefT->getDecl();
894 QualType UnderlyingType = D->getUnderlyingType();
1302 const Decl *D = E.getAsBaseOrMember().getPointer();
1303 if (const auto *FD = dyn_cast<FieldDecl>(D)) {
1309 D->getASTContext().getRecordType(cast<CXXRecordDecl>(D));
1325 const ValueDecl *D = Value.getMemberPointerDecl();
1326 assert(D);
1327 AddDecl(D);
1329 D->getASTContext().getMemberPointerPathAdjustment(Value).getQuantity());