Home | History | Annotate | Download | only in AST

Lines Matching refs:D1

42 //                                      Decl *D1, Decl *D2);
51 // IsStructurallyEquivalent(StructuralEquivalenceContext &Context, Decl *D1,
100 Decl *D1, Decl *D2);
1240 RecordDecl *D1 = Field1->getType()->castAs<RecordType>()->getDecl();
1242 return IsStructurallyEquivalent(Context, D1, D2);
1339 CXXRecordDecl *D1, CXXRecordDecl *D2) {
1340 assert(D1->isLambda() && D2->isLambda() &&
1342 if (!IsStructurallyEquivalent(Context, D1->getLambdaCallOperator(),
1351 RecordDecl *D1, RecordDecl *D2) {
1354 IdentifierInfo *Name1 = D1->getIdentifier();
1355 if (!Name1 && D1->getTypedefNameForAnonDecl())
1356 Name1 = D1->getTypedefNameForAnonDecl()->getIdentifier();
1363 if (D1->isUnion() != D2->isUnion()) {
1368 Context.Diag1(D1->getLocation(), diag::note_odr_tag_kind_here)
1369 << D1->getDeclName() << (unsigned)D1->getTagKind();
1374 if (!D1->getDeclName() && !D2->getDeclName()) {
1378 StructuralEquivalenceContext::findUntaggedStructOrUnionIndex(D1)) {
1390 const auto *Spec1 = dyn_cast<ClassTemplateSpecializationDecl>(D1);
1415 D1 = D1->getDefinition();
1417 if (!D1 || !D2)
1426 if (D1->hasExternalLexicalStorage() || D2->hasExternalLexicalStorage())
1431 if (D1->isBeingDefined() || D2->isBeingDefined())
1434 if (auto *D1CXX = dyn_cast<CXXRecordDecl>(D1)) {
1456 Context.Diag1(D1->getLocation(), diag::note_odr_number_of_bases)
1536 Context.Diag1(D1->getLocation(), diag::note_odr_missing_friend);
1558 for (RecordDecl::field_iterator Field1 = D1->field_begin(),
1559 Field1End = D1->field_end();
1585 Context.Diag1(D1->getLocation(), diag::note_odr_missing_field);
1595 EnumDecl *D1, EnumDecl *D2) {
1598 IdentifierInfo *Name1 = D1->getIdentifier();
1599 if (!Name1 && D1->getTypedefNameForAnonDecl())
1600 Name1 = D1->getTypedefNameForAnonDecl()->getIdentifier();
1609 D1 = D1->getDefinition();
1611 if (!D1 || !D2)
1616 for (EnumDecl::enumerator_iterator EC1 = D1->enumerator_begin(),
1617 EC1End = D1->enumerator_end();
1657 Context.Diag1(D1->getLocation(), diag::note_odr_missing_enumerator);
1701 TemplateTypeParmDecl *D1,
1703 if (D1->isParameterPack() != D2->isParameterPack()) {
1709 Context.Diag1(D1->getLocation(), diag::note_odr_parameter_pack_non_pack)
1710 << D1->isParameterPack();
1719 NonTypeTemplateParmDecl *D1,
1721 if (D1->isParameterPack() != D2->isParameterPack()) {
1727 Context.Diag1(D1->getLocation(), diag::note_odr_parameter_pack_non_pack)
1728 << D1->isParameterPack();
1734 if (!IsStructurallyEquivalent(Context, D1->getType(), D2->getType())) {
1739 << D2->getType() << D1->getType();
1740 Context.Diag1(D1->getLocation(), diag::note_odr_value_here)
1741 << D1->getType();
1750 TemplateTemplateParmDecl *D1,
1752 if (D1->isParameterPack() != D2->isParameterPack()) {
1758 Context.Diag1(D1->getLocation(), diag::note_odr_parameter_pack_non_pack)
1759 << D1->isParameterPack();
1765 return IsStructurallyEquivalent(Context, D1->getTemplateParameters(),
1770 StructuralEquivalenceContext &Ctx, TemplateDecl *D1, TemplateDecl *D2) {
1771 if (!IsStructurallyEquivalent(D1->getIdentifier(), D2->getIdentifier()))
1773 if (!D1->getIdentifier()) // Special name
1774 if (D1->getNameAsString() != D2->getNameAsString())
1776 return IsStructurallyEquivalent(Ctx, D1->getTemplateParameters(),
1781 ClassTemplateDecl *D1,
1784 if (!IsTemplateDeclCommonStructurallyEquivalent(Context, D1, D2))
1788 return IsStructurallyEquivalent(Context, D1->getTemplatedDecl(),
1793 FunctionTemplateDecl *D1,
1796 if (!IsTemplateDeclCommonStructurallyEquivalent(Context, D1, D2))
1800 return IsStructurallyEquivalent(Context, D1->getTemplatedDecl()->getType(),
1805 ConceptDecl *D1,
1808 if (!IsTemplateDeclCommonStructurallyEquivalent(Context, D1, D2))
1812 return IsStructurallyEquivalent(Context, D1->getConstraintExpr(),
1817 FriendDecl *D1, FriendDecl *D2) {
1818 if ((D1->getFriendType() && D2->getFriendDecl()) ||
1819 (D1->getFriendDecl() && D2->getFriendType())) {
1822 if (D1->getFriendType() && D2->getFriendType())
1824 D1->getFriendType()->getType(),
1826 if (D1->getFriendDecl() && D2->getFriendDecl())
1827 return IsStructurallyEquivalent(Context, D1->getFriendDecl(),
1833 TypedefNameDecl *D1, TypedefNameDecl *D2) {
1834 if (!IsStructurallyEquivalent(D1->getIdentifier(), D2->getIdentifier()))
1837 return IsStructurallyEquivalent(Context, D1->getUnderlyingType(),
1842 FunctionDecl *D1, FunctionDecl *D2) {
1843 if (!IsStructurallyEquivalent(D1->getIdentifier(), D2->getIdentifier()))
1846 if (D1->isOverloadedOperator()) {
1849 if (D1->getOverloadedOperator() != D2->getOverloadedOperator())
1854 if (!IsStructurallyEquivalent(Context, D1->getType(), D2->getType()))
1862 Decl *D1, Decl *D2) {
1865 D1 = D1->getCanonicalDecl();
1867 std::pair<Decl *, Decl *> P{D1, D2};
1875 // If yes D1 and D2 will be checked later (from DeclsToCheck),
1993 bool StructuralEquivalenceContext::IsEquivalent(Decl *D1, Decl *D2) {
2006 if (!::IsStructurallyEquivalent(*this, D1, D2))
2030 bool StructuralEquivalenceContext::CheckCommonEquivalence(Decl *D1, Decl *D2) {
2032 TemplateDecl *Template1 = D1->getDescribedTemplate();
2045 Decl *D1, Decl *D2) {
2048 if (D1->getKind() != D2->getKind())
2053 switch (D1->getKind()) {
2057 return ::IsStructurallyEquivalent(*this, static_cast<DERIVED##Decl *>(D1), \
2070 Decl *D1 = P.first;
2074 CheckCommonEquivalence(D1, D2) && CheckKindSpecificEquivalence(D1, D2);