================ @@ -82,34 +84,25 @@ UseStartsEndsWithCheck::UseStartsEndsWithCheck(StringRef Name, void UseStartsEndsWithCheck::registerMatchers(MatchFinder *Finder) { const auto ZeroLiteral = integerLiteral(equals(0)); - const auto HasStartsWithMethodWithName = [](const std::string &Name) { - return hasMethod( - cxxMethodDecl(hasName(Name), isConst(), parameterCountIs(1)) - .bind("starts_with_fun")); - }; - const auto HasStartsWithMethod = - anyOf(HasStartsWithMethodWithName("starts_with"), - HasStartsWithMethodWithName("startsWith"), - HasStartsWithMethodWithName("startswith")); - const auto OnClassWithStartsWithFunction = - on(hasType(hasCanonicalType(hasDeclaration(cxxRecordDecl( - anyOf(HasStartsWithMethod, - hasAnyBase(hasType(hasCanonicalType( - hasDeclaration(cxxRecordDecl(HasStartsWithMethod))))))))))); - - const auto HasEndsWithMethodWithName = [](const std::string &Name) { - return hasMethod( - cxxMethodDecl(hasName(Name), isConst(), parameterCountIs(1)) - .bind("ends_with_fun")); - }; - const auto HasEndsWithMethod = anyOf(HasEndsWithMethodWithName("ends_with"), - HasEndsWithMethodWithName("endsWith"), - HasEndsWithMethodWithName("endswith")); + const auto ClassTypeWithMethod = + [](const StringRef MethodBoundName, + const llvm::ArrayRef<StringRef> &Methods) { + const auto Method = + cxxMethodDecl(isConst(), parameterCountIs(1), + returns(booleanType()), hasAnyName(Methods)) + .bind(MethodBoundName); + return qualType(hasCanonicalType(hasDeclaration(cxxRecordDecl( + anyOf(hasMethod(Method), + hasAnyBase(hasType(hasCanonicalType( + hasDeclaration(cxxRecordDecl(hasMethod(Method))))))))))); + }; + + const auto OnClassWithStartsWithFunction = on(hasType(ClassTypeWithMethod( + "starts_with_fun", {"starts_with", "startsWith", "startswith"}))); ---------------- 5chmidti wrote:
Done, though there may be more cases, such as `Starts_With`, etc. (The change can be considered related, so I did it in this pr) https://github.com/llvm/llvm-project/pull/112101 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits