Skip to content

Commit

Permalink
Add exceptions for other assignment operators to daedalean-use-nodiscard
Browse files Browse the repository at this point in the history
  • Loading branch information
Javier-varez committed Aug 3, 2022
1 parent 676f0a1 commit 2749af7
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 3 deletions.
23 changes: 20 additions & 3 deletions clang-tools-extra/clang-tidy/daedalean/UseNodiscardCheck.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,26 @@ namespace {
AST_MATCHER(CXXMethodDecl, isOverloadedAssignmentOperator) {
// Don't put ``[[nodiscard]]`` in front of assignment operators that return a
// reference.
return Node.isOverloadedOperator() &&
(Node.getOverloadedOperator() == OverloadedOperatorKind::OO_Equal) &&
Node.getReturnType()->isReferenceType();
if (Node.isOverloadedOperator()) {
switch (Node.getOverloadedOperator()) {
case clang::OverloadedOperatorKind::OO_Equal:
case clang::OverloadedOperatorKind::OO_AmpEqual:
case clang::OverloadedOperatorKind::OO_CaretEqual:
case clang::OverloadedOperatorKind::OO_GreaterEqual:
case clang::OverloadedOperatorKind::OO_MinusEqual:
case clang::OverloadedOperatorKind::OO_PlusEqual:
case clang::OverloadedOperatorKind::OO_PercentEqual:
case clang::OverloadedOperatorKind::OO_PipeEqual:
case clang::OverloadedOperatorKind::OO_SlashEqual:
case clang::OverloadedOperatorKind::OO_StarEqual:
case clang::OverloadedOperatorKind::OO_GreaterGreaterEqual:
case clang::OverloadedOperatorKind::OO_LessLessEqual:
return Node.getReturnType()->isReferenceType();
default:
return false;
}
}
return false;
}

AST_MATCHER(CXXMethodDecl, isLambda) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -356,3 +356,18 @@ template <typename T>
[[nodiscard]] bool callBuiltin() {
return __builtin_isinf(0.0) != 0;
}

// Assignemnt operators
class A {

A &operator=(const A &);
A &operator=(A &&);
A &operator+=(int);
A &operator-=(int);
A &operator*=(int);
A &operator/=(int);
A &operator<<=(int);
A &operator>>=(int);
A &operator|=(int);
A &operator^=(int);
};

0 comments on commit 2749af7

Please sign in to comment.