@@ -31,9 +31,16 @@ AST_MATCHER_P(FunctionDecl, isInstantiatedFrom, Matcher<FunctionDecl>,
3131 Finder, Builder);
3232}
3333
34- AST_MATCHER_P (CXXMethodDecl, isOperatorOverloading,
35- llvm::SmallVector<OverloadedOperatorKind>, Kinds) {
36- return llvm::is_contained (Kinds, Node.getOverloadedOperator ());
34+ constexpr std::initializer_list<OverloadedOperatorKind>
35+ AssignmentOverloadedOperatorKinds = {
36+ OO_Equal, OO_PlusEqual, OO_MinusEqual, OO_StarEqual,
37+ OO_SlashEqual, OO_PercentEqual, OO_CaretEqual, OO_AmpEqual,
38+ OO_PipeEqual, OO_LessLessEqual, OO_GreaterGreaterEqual, OO_PlusPlus,
39+ OO_MinusMinus};
40+
41+ AST_MATCHER (FunctionDecl, isAssignmentOverloadedOperator) {
42+ return llvm::is_contained (AssignmentOverloadedOperatorKinds,
43+ Node.getOverloadedOperator ());
3744}
3845} // namespace
3946
@@ -164,22 +171,18 @@ void UnusedReturnValueCheck::storeOptions(ClangTidyOptions::OptionMap &Opts) {
164171}
165172
166173void UnusedReturnValueCheck::registerMatchers (MatchFinder *Finder) {
167- auto MatchedDirectCallExpr = expr (
168- callExpr (
169- callee (functionDecl (
170- // Don't match void overloads of checked functions.
171- unless (returns (voidType ())),
172- // Don't match copy or move assignment operator.
173- unless (cxxMethodDecl (isOperatorOverloading (
174- {OO_Equal, OO_PlusEqual, OO_MinusEqual, OO_StarEqual,
175- OO_SlashEqual, OO_PercentEqual, OO_CaretEqual, OO_AmpEqual,
176- OO_PipeEqual, OO_LessLessEqual, OO_GreaterGreaterEqual}))),
177- anyOf (
178- isInstantiatedFrom (
179- matchers::matchesAnyListedName (CheckedFunctions)),
180- returns (hasCanonicalType (hasDeclaration (namedDecl (
181- matchers::matchesAnyListedName (CheckedReturnTypes)))))))))
182- .bind (" match" ));
174+ auto MatchedDirectCallExpr =
175+ expr (callExpr (callee (functionDecl (
176+ // Don't match copy or move assignment operator.
177+ unless (isAssignmentOverloadedOperator ()),
178+ // Don't match void overloads of checked functions.
179+ unless (returns (voidType ())),
180+ anyOf (isInstantiatedFrom (matchers::matchesAnyListedName (
181+ CheckedFunctions)),
182+ returns (hasCanonicalType (hasDeclaration (
183+ namedDecl (matchers::matchesAnyListedName (
184+ CheckedReturnTypes)))))))))
185+ .bind (" match" ));
183186
184187 auto CheckCastToVoid =
185188 AllowCastToVoid ? castExpr (unless (hasCastKind (CK_ToVoid))) : castExpr ();
0 commit comments