[PATCH] D12031: Const std::move() argument ClangTidy check

Aaron Ballman via cfe-commits cfe-commits at lists.llvm.org
Tue Nov 3 10:21:14 PST 2015


aaron.ballman added a subscriber: aaron.ballman.

================
Comment at: clang-tidy/misc/MoveConstantArgumentCheck.cpp:1
@@ +1,2 @@
+#include "MoveConstantArgumentCheck.h"
+
----------------
Missing new file legal text.

================
Comment at: clang-tidy/misc/MoveConstantArgumentCheck.cpp:9
@@ +8,3 @@
+
+void MoveConstantArgumentCheck::registerMatchers(MatchFinder* Finder) {
+  Finder->addMatcher(
----------------
Formatting -- the * should go with Finder. May want to run clang-format over the entire patch; there's a lot of other formatting issues I will refrain from commenting on.

================
Comment at: clang-tidy/misc/MoveConstantArgumentCheck.cpp:10
@@ +9,3 @@
+void MoveConstantArgumentCheck::registerMatchers(MatchFinder* Finder) {
+  Finder->addMatcher(
+      callExpr(callee(functionDecl(hasName("::std::move")))).bind("call-move"),
----------------
Please only register this matcher for C++ code.

================
Comment at: clang-tidy/misc/MoveConstantArgumentCheck.cpp:22
@@ +21,3 @@
+  bool IsTypeDependOnTemplateParameter =
+      false;  // my first guess was type->getTypeClass () == 30 but it doesn't
+              // work in some cases. Could you please advice better solution.
----------------
Arg->getType()->isDependentType() should do what you want, if I understand you properly.

================
Comment at: clang-tidy/misc/MoveConstantArgumentCheck.cpp:29
@@ +28,3 @@
+  if (IsConstArg || IsTriviallyCopyable) {
+    bool IsVariable = dyn_cast<DeclRefExpr>(Arg) != nullptr;
+    std::string message = "std::move of the ";
----------------
isa<DeclRefExpr> instead of dyn_cast and check against nullptr.

================
Comment at: clang-tidy/misc/MoveConstantArgumentCheck.cpp:34
@@ +33,3 @@
+    message += IsTriviallyCopyable ? "of trivially-copyable type " : "";
+    message += "doesn't have effect. ";
+    message += "Remove std::move()";
----------------
This line reads a bit strangely to me. Perhaps "has no effect" instead? Also, our diagnostics are not full sentences, so you should remove the period, and instead do: "; remove std::move()"

================
Comment at: clang-tidy/misc/MoveConstantArgumentCheck.h:1
@@ +1,2 @@
+#include "../ClangTidy.h"
+
----------------
Missing header include guards and header legal text.


http://reviews.llvm.org/D12031





More information about the cfe-commits mailing list