Lines Matching refs:D2

43 //                                      Decl *D1, Decl *D2);
53 // Decl *D2)`. So far so good, this is almost like the BFS. However, if we
100 Decl *D1, Decl *D2);
974 RecordDecl *D2 = Field2->getType()->castAs<RecordType>()->getDecl();
975 return IsStructurallyEquivalent(Context, D1, D2);
1111 CXXRecordDecl *D1, CXXRecordDecl *D2) {
1112 assert(D1->isLambda() && D2->isLambda() &&
1115 D2->getLambdaCallOperator()))
1123 RecordDecl *D1, RecordDecl *D2) {
1124 if (D1->isUnion() != D2->isUnion()) {
1126 Context.Diag2(D2->getLocation(), Context.getApplicableDiagnostic(
1128 << Context.ToCtx.getTypeDeclType(D2);
1135 if (!D1->getDeclName() && !D2->getDeclName()) {
1142 D2)) {
1152 const auto *Spec2 = dyn_cast<ClassTemplateSpecializationDecl>(D2);
1177 D2 = D2->getDefinition();
1178 if (!D1 || !D2)
1187 if (D1->hasExternalLexicalStorage() || D2->hasExternalLexicalStorage())
1192 if (D1->isBeingDefined() || D2->isBeingDefined())
1196 if (auto *D2CXX = dyn_cast<CXXRecordDecl>(D2)) {
1211 Context.Diag2(D2->getLocation(),
1214 << Context.ToCtx.getTypeDeclType(D2);
1215 Context.Diag2(D2->getLocation(), diag::note_odr_number_of_bases)
1231 Context.Diag2(D2->getLocation(),
1234 << Context.ToCtx.getTypeDeclType(D2);
1246 Context.Diag2(D2->getLocation(),
1249 << Context.ToCtx.getTypeDeclType(D2);
1267 Context.Diag2(D2->getLocation(),
1272 Context.Diag2(D2->getLocation(), diag::note_odr_missing_friend);
1279 Context.Diag2(D2->getLocation(),
1292 Context.Diag2(D2->getLocation(),
1295 << Context.ToCtx.getTypeDeclType(D2);
1303 Context.Diag2(D2->getLocation(),
1306 << Context.ToCtx.getTypeDeclType(D2);
1310 Context.Diag2(D2->getLocation(), diag::note_odr_missing_base);
1317 RecordDecl::field_iterator Field2 = D2->field_begin(),
1318 Field2End = D2->field_end();
1324 Context.Diag2(D2->getLocation(),
1327 << Context.ToCtx.getTypeDeclType(D2);
1330 Context.Diag2(D2->getLocation(), diag::note_odr_missing_field);
1341 Context.Diag2(D2->getLocation(), Context.getApplicableDiagnostic(
1343 << Context.ToCtx.getTypeDeclType(D2);
1356 EnumDecl *D1, EnumDecl *D2) {
1361 D2 = D2->getDefinition();
1362 if (!D1 || !D2)
1365 EnumDecl::enumerator_iterator EC2 = D2->enumerator_begin(),
1366 EC2End = D2->enumerator_end();
1372 Context.Diag2(D2->getLocation(),
1375 << Context.ToCtx.getTypeDeclType(D2);
1378 Context.Diag2(D2->getLocation(), diag::note_odr_missing_enumerator);
1388 Context.Diag2(D2->getLocation(),
1391 << Context.ToCtx.getTypeDeclType(D2);
1403 Context.Diag2(D2->getLocation(), Context.getApplicableDiagnostic(
1405 << Context.ToCtx.getTypeDeclType(D2);
1453 TemplateTypeParmDecl *D2) {
1454 if (D1->isParameterPack() != D2->isParameterPack()) {
1456 Context.Diag2(D2->getLocation(),
1459 << D2->isParameterPack();
1471 NonTypeTemplateParmDecl *D2) {
1472 if (D1->isParameterPack() != D2->isParameterPack()) {
1474 Context.Diag2(D2->getLocation(),
1477 << D2->isParameterPack();
1485 if (!IsStructurallyEquivalent(Context, D1->getType(), D2->getType())) {
1487 Context.Diag2(D2->getLocation(),
1490 << D2->getType() << D1->getType();
1502 TemplateTemplateParmDecl *D2) {
1503 if (D1->isParameterPack() != D2->isParameterPack()) {
1505 Context.Diag2(D2->getLocation(),
1508 << D2->isParameterPack();
1517 D2->getTemplateParameters());
1521 StructuralEquivalenceContext &Ctx, TemplateDecl *D1, TemplateDecl *D2) {
1522 if (!IsStructurallyEquivalent(D1->getIdentifier(), D2->getIdentifier()))
1525 if (D1->getNameAsString() != D2->getNameAsString())
1528 D2->getTemplateParameters());
1533 ClassTemplateDecl *D2) {
1535 if (!IsTemplateDeclCommonStructurallyEquivalent(Context, D1, D2))
1540 D2->getTemplatedDecl());
1545 FunctionTemplateDecl *D2) {
1547 if (!IsTemplateDeclCommonStructurallyEquivalent(Context, D1, D2))
1552 D2->getTemplatedDecl()->getType());
1557 ConceptDecl *D2) {
1559 if (!IsTemplateDeclCommonStructurallyEquivalent(Context, D1, D2))
1564 D2->getConstraintExpr());
1568 FriendDecl *D1, FriendDecl *D2) {
1569 if ((D1->getFriendType() && D2->getFriendDecl()) ||
1570 (D1->getFriendDecl() && D2->getFriendType())) {
1573 if (D1->getFriendType() && D2->getFriendType())
1576 D2->getFriendType()->getType());
1577 if (D1->getFriendDecl() && D2->getFriendDecl())
1579 D2->getFriendDecl());
1584 FunctionDecl *D1, FunctionDecl *D2) {
1586 if (!IsStructurallyEquivalent(Context, D1->getType(), D2->getType()))
1594 Decl *D1, Decl *D2) {
1598 D2 = D2->getCanonicalDecl();
1599 std::pair<Decl *, Decl *> P{D1, D2};
1607 // If yes D1 and D2 will be checked later (from DeclsToCheck),
1725 bool StructuralEquivalenceContext::IsEquivalent(Decl *D1, Decl *D2) {
1738 if (!::IsStructurallyEquivalent(*this, D1, D2))
1753 bool StructuralEquivalenceContext::CheckCommonEquivalence(Decl *D1, Decl *D2) {
1756 TemplateDecl *Template2 = D2->getDescribedTemplate();
1768 Decl *D1, Decl *D2) {
1772 if (auto *Record2 = dyn_cast<RecordDecl>(D2)) {
1788 if (auto *Enum2 = dyn_cast<EnumDecl>(D2)) {
1804 if (const auto *Typedef2 = dyn_cast<TypedefNameDecl>(D2)) {
1815 if (auto *ClassTemplate2 = dyn_cast<ClassTemplateDecl>(D2)) {
1824 if (auto *FunctionTemplate2 = dyn_cast<FunctionTemplateDecl>(D2)) {
1833 if (auto *ConceptDecl2 = dyn_cast<ConceptDecl>(D2)) {
1841 if (auto *TTP2 = dyn_cast<TemplateTypeParmDecl>(D2)) {
1849 if (auto *NTTP2 = dyn_cast<NonTypeTemplateParmDecl>(D2)) {
1857 if (auto *TTP2 = dyn_cast<TemplateTemplateParmDecl>(D2)) {
1865 if (auto *MD2 = dyn_cast<CXXMethodDecl>(D2)) {
1873 if (FunctionDecl *FD2 = dyn_cast<FunctionDecl>(D2)) {
1890 if (FriendDecl *FrD2 = dyn_cast<FriendDecl>(D2)) {
1909 Decl *D2 = P.second;
1912 CheckCommonEquivalence(D1, D2) && CheckKindSpecificEquivalence(D1, D2);