ymandel added inline comments.
================ Comment at: clang/include/clang/AST/RecursiveASTVisitor.h:335 + template <bool has_same_type> struct is_same_method_impl { + static bool isSameMethod(...) { return false; } + }; ---------------- Why use var-args rather than spelling out the type arguments like you have on lines 339-341 or, simpler, line 351? ================ Comment at: clang/include/clang/AST/RecursiveASTVisitor.h:339 + template <> struct is_same_method_impl<true> { + template <typename FirstTy, typename FirstResult, typename... FirstParams, + typename SecondTy, typename SecondResult, ---------------- Given that we've established them to be the same type, why two sets of template arguments? ================ Comment at: clang/include/clang/AST/RecursiveASTVisitor.h:637 case Stmt::CLASS##Class: \ - TRY_TO(WalkUpFrom##CLASS(static_cast<CLASS *>(S))); break; + if (isSameMethod(&RecursiveASTVisitor::Traverse##CLASS, \ + &Derived::Traverse##CLASS)) { \ ---------------- Do you explain this logic somewhere? Or do you feel it will be obvious to the reader? (I don't have a good intuition about this class to judge). Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D82486/new/ https://reviews.llvm.org/D82486 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits