forked from OSchip/llvm-project
Change default traversal in AST Matchers to ignore invisible nodes
This makes many scenarios simpler by not requiring the user to write ignoringImplicit() all the time, nor to account for non-visible cxxConstructExpr() and cxxMemberCalExpr() nodes. This is also, in part, inclusive of the equivalent of adding a use of ignoringParenImpCasts() between all expr()-related matchers in an expression. The pre-existing traverse(TK_AsIs, ...) matcher can be used to explcitly match on implicit/invisible nodes. See http://lists.llvm.org/pipermail/cfe-dev/2019-December/064143.html for more Reviewers: aaron.ballman Subscribers: cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D72534
This commit is contained in:
parent
51dec88c5d
commit
d0da5d2bbe
|
@ -246,7 +246,14 @@ release of Clang. Users of the build system should adjust accordingly.
|
|||
AST Matchers
|
||||
------------
|
||||
|
||||
- ...
|
||||
- Traversal in AST Matchers was simplified to use the
|
||||
``TK_IgnoreUnlessSpelledInSource`` mode by default, instead of ``TK_AsIs``.
|
||||
This means that many uses of the ``ignoringImplicit()`` and similar matchers
|
||||
is no longer necessary. Clients of AST Matchers which wish to match on
|
||||
implicit AST nodes can wrap their matcher in ``traverse(TK_AsIs, ...)`` or
|
||||
use ``TraversalKindScope`` if appropriate. The ``clang-query`` tool also
|
||||
uses ``IgnoreUnlessSpelledInSource`` by default. The mode can be changed
|
||||
using ``set traversal AsIs`` in the ``clang-query`` environment.
|
||||
|
||||
clang-format
|
||||
------------
|
||||
|
|
|
@ -67,7 +67,7 @@ public:
|
|||
private:
|
||||
ASTContext &ASTCtx;
|
||||
class ParentMap;
|
||||
TraversalKind Traversal = TK_AsIs;
|
||||
TraversalKind Traversal = TK_IgnoreUnlessSpelledInSource;
|
||||
std::unique_ptr<ParentMap> Parents;
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in New Issue