================
@@ -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

Reply via email to