[PATCH] D128861: [clang-tidy] add cppcoreguidelines-symmetric-binary-operator
Nathan James via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Wed Aug 17 04:14:30 PDT 2022
njames93 added inline comments.
================
Comment at: clang-tools-extra/clang-tidy/cppcoreguidelines/SymmetricBinaryOperatorCheck.cpp:24-34
+using transformer::applyFirst;
+using transformer::cat;
+using transformer::changeTo;
+using transformer::insertBefore;
+using transformer::makeRule;
+using transformer::name;
+using transformer::node;
----------------
Just bring the whole namespace into scope.
================
Comment at: clang-tools-extra/clang-tidy/cppcoreguidelines/SymmetricBinaryOperatorCheck.cpp:56
+bool isComparisonOperator(OverloadedOperatorKind Kind) {
+ return llvm::is_contained(
+ std::initializer_list<OverloadedOperatorKind>{
----------------
Could these not be represented as a bitset?
================
Comment at: clang-tools-extra/clang-tidy/cppcoreguidelines/SymmetricBinaryOperatorCheck.cpp:84
+
+static Expected<DynTypedNode> getNode(const BoundNodes &Nodes, StringRef ID) {
+ auto &NodesMap = Nodes.getMap();
----------------
Should there ever be a case where this returns an error. If not can this assert instead and just return a DynTypedNode?
================
Comment at: clang-tools-extra/clang-tidy/cppcoreguidelines/SymmetricBinaryOperatorCheck.cpp:117-122
+ for (; OptToken.hasValue() && !IsConstToken(OptToken.getValue()) &&
+ !OptToken.getValue().isOneOf(tok::TokenKind::l_brace,
+ tok::TokenKind::kw_default,
+ tok::TokenKind::semi);
+ OptToken = GetNextToken(OptToken.getValue().getLocation())) {
+ }
----------------
Looks like this is begging to be a while loop.
================
Comment at: clang-tools-extra/clang-tidy/cppcoreguidelines/SymmetricBinaryOperatorCheck.cpp:129-133
+ // This error is unreachable within this check. constSpec is only called
+ // on defaulted symmetric binary operators, which are required to be const
+ // specified.
+ return invalidArgumentError(
+ "constSpec invalid argument: member function is not const qualified");
----------------
If its unreachable, use unreachable to indicate that.
================
Comment at: clang-tools-extra/clang-tidy/cppcoreguidelines/SymmetricBinaryOperatorCheck.cpp:134
+ "constSpec invalid argument: member function is not const qualified");
+ };
+ return invalidArgumentError(
----------------
This semi-colon looks suspicious
================
Comment at: clang-tools-extra/clang-tidy/cppcoreguidelines/SymmetricBinaryOperatorCheck.cpp:135-136
+ };
+ return invalidArgumentError(
+ "constSpec invalid argument: not a CXXMethodDecl");
+ };
----------------
Is this error reachable? Again if not use unreachable.
If it is reachable, is it possible to show a test case where this error is expected and detected in the test?
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D128861/new/
https://reviews.llvm.org/D128861
More information about the cfe-commits
mailing list