jcsxky added inline comments.
================ Comment at: clang/unittests/AST/StructuralEquivalenceTest.cpp:1709 + classTemplateDecl(hasName("A"))); + EXPECT_TRUE(testStructuralMatch(t)); + EXPECT_TRUE(testStructuralMatch(t, true)); ---------------- balazske wrote: > The intent was to have `EXPECT_FALSE` without ignore depth, and the next test > would be not needed. If it does not work with this code a different code can > be found. The depth of the (unnamed) template parameter is really different > in these cases too, but it is probably not detected by structural > equivalence. Maybe `template<int U>` or `template<class T, T U>` is needed. > But to document this behavior the current test can be added too, with name > `IgnoreTemplateParmDepthAtTemplateTypeParmDecl`, and the new one with name > `IgnoreTemplateParmDepthAtNonTypeTemplateParmDecl`. 1. The reason why it's true without ignore depth is that template parameter is 'TemplateTypeParm' in this case. So ``` IsStructurallyEquivalent(StructuralEquivalenceContext &Context, TemplateTypeParmDecl *D1, TemplateTypeParmDecl *D2) ``` will be called and return true. 2. When process 'NonTypeTemplateParm', ``` IsStructurallyEquivalent(StructuralEquivalenceContext &Context, QualType T1, QualType T2) ``` is called and return false as the different depth. I will add `IgnoreTemplateParmDepthAtNonTypeTemplateParmDecl` to illustrate the difference. Also, next test will be removed. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D156693/new/ https://reviews.llvm.org/D156693 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits