[PATCH] D139409: [include-cleaner] Handle dependent type members in AST
Haojian Wu via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Mon Dec 12 01:07:21 PST 2022
hokein added a comment.
thanks, looks mostly good, I think we can simplify the unittest further.
================
Comment at: clang-tools-extra/include-cleaner/lib/WalkAST.cpp:51
Type = Type->getPointeeType();
+ if (const TemplateSpecializationType *TST =
+ Type->getAs<TemplateSpecializationType>()) {
----------------
nit: we can use `const auto*` here as the type is explicitly spelled in the `getAs<XXX>`
================
Comment at: clang-tools-extra/include-cleaner/lib/WalkAST.cpp:52
+ if (const TemplateSpecializationType *TST =
+ Type->getAs<TemplateSpecializationType>()) {
+ return TST->getTemplateName().getAsTemplateDecl();
----------------
nit: remove the {} around the if statement
================
Comment at: clang-tools-extra/include-cleaner/lib/WalkAST.cpp:74
}
+ bool VisitCXXDependentScopeMemberExpr(CXXDependentScopeMemberExpr *E) {
----------------
nit: I will remove this blank line, to make `VisitMemberExpr` and `VisitCXXDependentScopeMemberExpr` group together as they both achieve the same goal.
================
Comment at: clang-tools-extra/include-cleaner/unittests/WalkASTTest.cpp:207
+ testWalk("template<typename T> struct $explicit^Base { void method(); };",
+ "template<typename T> void k(Base<T>* t) { t->^method(); }");
+ testWalk("template<typename T> struct $explicit^Base { void method(); };",
----------------
I think keeping the above 3 test cases is enough, I would probably add them to the exiting MemberExprs test (with a comment saying this is dependent-type case).
================
Comment at: clang-tools-extra/include-cleaner/unittests/WalkASTTest.cpp:209
+ testWalk("template<typename T> struct $explicit^Base { void method(); };",
+ "template<typename T> void k() { Base<T> t; t.^method(); }");
+ testWalk("template<typename T> struct $explicit^Base { void method(); };",
----------------
I think we can remove this test, this test duplicates the first test
================
Comment at: clang-tools-extra/include-cleaner/unittests/WalkASTTest.cpp:211
+ testWalk("template<typename T> struct $explicit^Base { void method(); };",
+ "template<typename T> void k() { Base<T>* t; t->^method(); }");
+ testWalk("template<typename T> struct $explicit^Base { void method(); };",
----------------
And this case as well
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D139409/new/
https://reviews.llvm.org/D139409
More information about the cfe-commits
mailing list