Required for capturing base specifier in matchers:
`cxxRecordDecl(hasDirectBase(cxxBaseSpecifier().bind("base")))`
Paths
| Differential D69218
[ASTMatchers] Add `cxxBaseSpecifier` matcher (non-top-level) ClosedPublic Authored by nick on Oct 19 2019, 1:59 PM.
Details Summary Required for capturing base specifier in matchers: `cxxRecordDecl(hasDirectBase(cxxBaseSpecifier().bind("base")))`
Diff Detail
Event TimelineComment Actions Needs more tests - what happens with multiple inheritance, what about inheriting from inherited? nick retitled this revision from [clang][AST] Add `CXXBaseSpecifier` matcher support to [ASTMatchers] Add `cxxBaseSpecifier` matcher (non-top-level). Comment Actions
This revision is now accepted and ready to land.Mar 21 2021, 6:48 AM njames93 added inline comments.
This revision now requires changes to proceed.Mar 21 2021, 4:38 PM
Comment Actions Comment Actions
I had a PR in Boost that took 4 years to merge, so it is nothing new to me :D Rebased, even though there was no conflicts.
Comment Actions
Yes, I'm a few years trying to get https://steveire.wordpress.com/2019/04/30/the-future-of-ast-matching-refactoring-tools-eurollvm-and-accu/ merged, but I've made some progress :D.
I think arc patch might be a bit fickle, so it wasn't applying cleanly for me before. This LGTM and there have been no further objections, and the objection from @njames93 seems to be addressed. What name/email should I use for the commit?
Comment Actions
Nikita Kniazev <kniazev.nikita -at- gmail.com> This revision was landed with ongoing or failed builds. Closed by commit rG2f181086b5cb: [ASTMatchers] Add `cxxBaseSpecifier` matcher (non-top-level) (authored by nick, committed by • stephenkelly). · Explain Why This revision was automatically updated to reflect the committed changes.
Revision Contents
Diff 336252 clang/docs/LibASTMatchersReference.html
clang/include/clang/ASTMatchers/ASTMatchers.h
clang/lib/ASTMatchers/ASTMatchersInternal.cpp
clang/lib/ASTMatchers/Dynamic/Registry.cpp
clang/unittests/ASTMatchers/ASTMatchersNarrowingTest.cpp
clang/unittests/ASTMatchers/ASTMatchersTraversalTest.cpp
clang/unittests/ASTMatchers/Dynamic/RegistryTest.cpp
|
I don't think the change to this matcher is warranted.
The hasType matcher that accepts a DeclarationMatcher already has support for cxxBaseSpecifier.
However overloading the matcher that takes a QualType matcher doesn't make sense as base specifiers have no qualifications.