diff --git a/clang/docs/ReleaseNotes.rst b/clang/docs/ReleaseNotes.rst --- a/clang/docs/ReleaseNotes.rst +++ b/clang/docs/ReleaseNotes.rst @@ -249,7 +249,14 @@ 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 ------------ diff --git a/clang/include/clang/AST/ParentMapContext.h b/clang/include/clang/AST/ParentMapContext.h --- a/clang/include/clang/AST/ParentMapContext.h +++ b/clang/include/clang/AST/ParentMapContext.h @@ -67,7 +67,7 @@ private: ASTContext &ASTCtx; class ParentMap; - TraversalKind Traversal = TK_AsIs; + TraversalKind Traversal = TK_IgnoreUnlessSpelledInSource; std::unique_ptr Parents; };