From 3e315ba2547cbbfd6055e38bbca03f4d11bacbea Mon Sep 17 00:00:00 2001 From: Stephen Kelly Date: Sat, 7 Dec 2019 18:23:15 +0000 Subject: [PATCH] Deprecate the hasDefaultArgument matcher Summary: It doesn't provide a way to match on the contents of the default argumment. Rather than give it that capability, make it deprecated and recomment the use of hasInitializer instead. Reviewers: aaron.ballman Subscribers: cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D71166 --- clang/include/clang/ASTMatchers/ASTMatchers.h | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/clang/include/clang/ASTMatchers/ASTMatchers.h b/clang/include/clang/ASTMatchers/ASTMatchers.h index 9c0aae2..c3399db9 100644 --- a/clang/include/clang/ASTMatchers/ASTMatchers.h +++ b/clang/include/clang/ASTMatchers/ASTMatchers.h @@ -6544,6 +6544,20 @@ AST_MATCHER(NamedDecl, hasExternalFormalLinkage) { /// void x(int val) {} /// void y(int val = 0) {} /// \endcode +/// +/// Deprecated. Use hasInitializer() instead to be able to +/// match on the contents of the default argument. For example: +/// +/// \code +/// void x(int val = 7) {} +/// void y(int val = 42) {} +/// \endcode +/// parmVarDecl(hasInitializer(integerLiteral(equals(42)))) +/// matches the parameter of y +/// +/// A matcher such as +/// parmVarDecl(hasInitializer(anything())) +/// is equivalent to parmVarDecl(hasDefaultArgument()). AST_MATCHER(ParmVarDecl, hasDefaultArgument) { return Node.hasDefaultArg(); } -- 2.7.4