diff --git a/clang/docs/ReleaseNotes.rst b/clang/docs/ReleaseNotes.rst index 16f5915856fd..c38ff0e36790 100644 --- a/clang/docs/ReleaseNotes.rst +++ b/clang/docs/ReleaseNotes.rst @@ -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 ------------ diff --git a/clang/include/clang/AST/ParentMapContext.h b/clang/include/clang/AST/ParentMapContext.h index be4d75df7b99..5f9936b28e8f 100644 --- a/clang/include/clang/AST/ParentMapContext.h +++ b/clang/include/clang/AST/ParentMapContext.h @@ -67,7 +67,7 @@ public: private: ASTContext &ASTCtx; class ParentMap; - TraversalKind Traversal = TK_AsIs; + TraversalKind Traversal = TK_IgnoreUnlessSpelledInSource; std::unique_ptr Parents; };