[PATCH] [clang-tidy] Add a checker that flags all instances of overloaded unary operator&

Alexander Kornienko alexfh at google.com
Tue Jul 15 02:42:38 PDT 2014


================
Comment at: clang-tidy/google/OverloadedUnaryAndCheck.cpp:30
@@ +29,3 @@
+  Finder->addMatcher(
+      decl(allOf(unless(methodDecl()),
+                 functionDecl(parameterCountIs(1), hasOverloadedOperatorName(
----------------
Why is the outer matcher just "decl" and not "functionDecl"?

================
Comment at: clang-tidy/google/OverloadedUnaryAndCheck.cpp:38
@@ +37,3 @@
+  const auto *Decl = Result.Nodes.getNodeAs<FunctionDecl>("overload");
+  diag(Decl->getLocStart(), "unary operator& is dangerous, do not use it.");
+}
----------------
The original cpplint.py message is not very clear. I think, it should say "do not overload it".

================
Comment at: test/clang-tidy/google-overloaded-unary-and.cpp:1
@@ +1,2 @@
+// RUN: clang-tidy %s -checks='-*,google-runtime-operator' -- | FileCheck %s -implicit-check-not="{{warning|error}}:"
+
----------------
With -implicit-check-not it becomes bulky. We should make both CHECK-MESSAGES and CHECK-FIXES optional in check_clang_tidy_fix.sh and give the script a more generic name.

There's no need to do it in this patch, though.

================
Comment at: test/clang-tidy/google-overloaded-unary-and.cpp:4
@@ +3,3 @@
+struct Foo {
+  void *operator&();
+// CHECK: :[[@LINE-1]]:3: warning: unary operator& is dangerous, do not use it.
----------------
How about tests with template instantiations? ;)

http://reviews.llvm.org/D4498






More information about the cfe-commits mailing list