[clang-tools-extra] Support renaming designated initializers (PR #86976)

Edwin Vane via cfe-commits cfe-commits at lists.llvm.org
Thu Mar 28 09:52:37 PDT 2024


https://github.com/revane created https://github.com/llvm/llvm-project/pull/86976

Until now, they were just ignored by RenamerClangTidyCheck.

>From 85539210edf644259bb0dbb1d090e092709a1a1d Mon Sep 17 00:00:00 2001
From: Edwin Vane <revane at google.com>
Date: Thu, 28 Mar 2024 09:24:34 -0400
Subject: [PATCH] Support renaming designated initializers

Until now, they were just ignored by RenamerClangTidyCheck.
---
 .../utils/RenamerClangTidyCheck.cpp           | 19 +++++++++++++++++++
 .../readability/identifier-naming.cpp         |  8 ++++++++
 2 files changed, 27 insertions(+)

diff --git a/clang-tools-extra/clang-tidy/utils/RenamerClangTidyCheck.cpp b/clang-tools-extra/clang-tidy/utils/RenamerClangTidyCheck.cpp
index da1433aa2d05d4..e3409dfbb8f677 100644
--- a/clang-tools-extra/clang-tidy/utils/RenamerClangTidyCheck.cpp
+++ b/clang-tools-extra/clang-tidy/utils/RenamerClangTidyCheck.cpp
@@ -367,6 +367,25 @@ class RenamerClangTidyVisitor
     return true;
   }
 
+  bool VisitDesignatedInitExpr(DesignatedInitExpr *Expr) {
+    for (const auto &Designator : Expr->designators()) {
+      if (!Designator.isFieldDesignator())
+        continue;
+      auto *FieldDecl = Designator.getFieldDecl();
+      if (!FieldDecl)
+        continue;
+      auto *II = FieldDecl->getIdentifier();
+      if (!II)
+        continue;
+      SourceRange FixLocation{
+          Designator.getFieldLoc(),
+          Designator.getFieldLoc().getLocWithOffset(II->getLength())};
+      Check->addUsage(FieldDecl, FixLocation, SM);
+    }
+
+    return true;
+  }
+
 private:
   RenamerClangTidyCheck *Check;
   const SourceManager *SM;
diff --git a/clang-tools-extra/test/clang-tidy/checkers/readability/identifier-naming.cpp b/clang-tools-extra/test/clang-tidy/checkers/readability/identifier-naming.cpp
index 84bf7764583e80..9c390e544c2abd 100644
--- a/clang-tools-extra/test/clang-tidy/checkers/readability/identifier-naming.cpp
+++ b/clang-tools-extra/test/clang-tidy/checkers/readability/identifier-naming.cpp
@@ -755,3 +755,11 @@ STATIC_MACRO void someFunc(MyFunPtr, const MyFunPtr****) {}
 // CHECK-FIXES: {{^}}STATIC_MACRO void someFunc(my_fun_ptr_t, const my_fun_ptr_t****) {}
 #undef STATIC_MACRO
 }
+
+struct Some_struct {
+  int SomeMember;
+// CHECK-MESSAGES: :[[@LINE-1]]:7: warning: invalid case style for public member 'SomeMember' [readability-identifier-naming]
+// CHECK-FIXES: {{^}}  int some_member;
+};
+Some_struct g_s{ .SomeMember = 1 };
+// CHECK-FIXES: {{^}}Some_struct g_s{ .some_member = 1 };



More information about the cfe-commits mailing list