[PATCH] D24656: [clang-tidy] Add check readability-redundant-declaration

Alexander Kornienko via cfe-commits cfe-commits at lists.llvm.org
Mon Oct 10 12:13:15 PDT 2016


alexfh requested changes to this revision.
alexfh added inline comments.
This revision now requires changes to proceed.


================
Comment at: clang-tidy/readability/RedundantDeclarationCheck.cpp:39
+  bool MultiVar = false;
+  if (const auto *VD = dyn_cast<VarDecl>(D)) {
+    if (VD && VD->getPreviousDecl()->getStorageClass() == SC_Extern &&
----------------
danielmarjamaki wrote:
> I don't want to generate a fixit. because it could easily break the code. And it will probably depend on inclusion order.
Yep, not generating fixes for redundant declarations in multiple headers totally makes sense (at least, by default).


================
Comment at: clang-tidy/readability/RedundantDeclarationCheck.cpp:45
+    for (const auto Other : VD->getDeclContext()->decls()) {
+      if (Other != D && Other->getLocStart() == VD->getLocStart()) {
+        MultiVar = true;
----------------
danielmarjamaki wrote:
> I think this is better. But not perfect. Maybe there is still a better way.
I don't know whether there is a better way. I somewhat dislike iterating over all declarations here, but it only happens when we're about to generate a warning anyway. Good enough for the start.


================
Comment at: clang-tidy/readability/RedundantDeclarationCheck.cpp:60
+    auto Diag = diag(D->getLocation(), "redundant '%0' declaration")
+        << cast<NamedDecl>(D)->getName();
+    if (!MultiVar && !DifferentHeaders)
----------------
It should be possible to just use `D` here.


https://reviews.llvm.org/D24656





More information about the cfe-commits mailing list