forked from OSchip/llvm-project
246b428fb3
Update the ASTNodeTraverser to dump only nodes spelled in source. There are only a few which need to be handled, but Decl nodes for which isImplicit() is true are handled together. Update the RAV instances used in ASTMatchFinder to ignore the nodes too. As with handling of template instantiations, it is necessary to allow the RAV to process the implicit nodes because they need to be visitable before the first traverse() matcher is encountered. An exception to this is in the MatchChildASTVisitor, because we sometimes wish to make a node matchable but make its children not-matchable. This is the case for defaulted CXXMethodDecls for example. Extend TransformerTests to illustrate the kinds of problems that can arise when performing source code rewriting due to matching implicit nodes. This change accounts for handling nodes not spelled in source when using direct matching of nodes, and when using the has() and hasDescendant() matchers. Other matchers such as cxxRecordDecl(hasMethod(cxxMethodDecl())) still succeed for compiler-generated methods for example after this change. Updating the implementations of hasMethod() and other matchers is for a follow-up patch. Differential Revision: https://reviews.llvm.org/D90982 |
||
---|---|---|
.. | ||
Dynamic | ||
ASTMatchFinder.cpp | ||
ASTMatchersInternal.cpp | ||
CMakeLists.txt | ||
GtestMatchers.cpp |