================
@@ -281,6 +281,76 @@ static auto isNonConstMemberOperatorCall() {
return cxxOperatorCallExpr(callee(cxxMethodDecl(unless(isConst()))));
}
+static auto isMakePredicateFormatterFromIsOkMatcherCall() {
+ using namespace ::clang::ast_matchers; // NOLINT: Too many names
+ return callExpr(
+ callee(functionDecl(
+ hasName("::testing::internal::MakePredicateFormatterFromMatcher"))),
+ hasArgument(
+ 0, hasType(cxxRecordDecl(hasAnyName(
+ "::testing::status::internal_status::IsOkMatcher",
+ "::absl_testing::status_internal::IsOkMatcher",
+ "::testing::status::internal_status::IsOkAndHoldsMatcher",
+ "::absl_testing::status_internal::IsOkAndHoldsMatcher")))));
+}
+
+static auto isStatusIsOkMatcherCall() {
+ using namespace ::clang::ast_matchers; // NOLINT: Too many names
+ return callExpr(callee(functionDecl(hasAnyName(
+ "::testing::status::StatusIs", "absl_testing::StatusIs",
+ "::testing::status::CanonicalStatusIs",
+ "::absl_testing::CanonicalStatusIs"))),
+ hasArgument(0, declRefExpr(to(enumConstantDecl(hasAnyName(
+ "::absl::StatusCode::kOk", "OK"))))));
+}
+
+static auto isMakePredicateFormatterFromStatusIsMatcherCall() {
+ using namespace ::clang::ast_matchers; // NOLINT: Too many names
+ return callExpr(
+ callee(functionDecl(
+ hasName("::testing::internal::MakePredicateFormatterFromMatcher"))),
+ hasArgument(0, hasType(cxxRecordDecl(hasAnyName(
+ "::testing::status::internal_status::StatusIsMatcher",
+ "::testing::status::internal_status::"
+ "CanonicalStatusIsMatcher",
+ "::absl_testing::status_internal::StatusIsMatcher",
+ "::absl_testing::status_internal::"
+ "CanonicalStatusIsMatcher")))));
+}
+
+static auto isPredicateFormatterFromStatusMatcherCall() {
+ using namespace ::clang::ast_matchers; // NOLINT: Too many names
+ return cxxOperatorCallExpr(
+ hasOverloadedOperatorName("()"),
+ callee(cxxMethodDecl(ofClass(
+ hasName("testing::internal::PredicateFormatterFromMatcher")))),
+ hasArgument(2, hasType(cxxRecordDecl(hasName("absl::Status")))));
----------------
jvoung wrote:
nit: `hasType(statusType())` ?
like how the isPredicateFormatterFromStatusOrMatcherCall uses
`hasType(statusOrType())`
https://github.com/llvm/llvm-project/pull/170947
_______________________________________________
llvm-branch-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits