@@ -31,9 +31,16 @@ AST_MATCHER_P(FunctionDecl, isInstantiatedFrom, Matcher<FunctionDecl>,
31
31
Finder, Builder);
32
32
}
33
33
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 ());
37
44
}
38
45
} // namespace
39
46
@@ -164,22 +171,18 @@ void UnusedReturnValueCheck::storeOptions(ClangTidyOptions::OptionMap &Opts) {
164
171
}
165
172
166
173
void 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" ));
183
186
184
187
auto CheckCastToVoid =
185
188
AllowCastToVoid ? castExpr (unless (hasCastKind (CK_ToVoid))) : castExpr ();
0 commit comments