summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEdwin Vane <revane@google.com>2024-04-08 11:22:19 -0400
committerGitHub <noreply@github.com>2024-04-08 11:22:19 -0400
commit1107b47dcd145518c7b811bf10e2b848782b0478 (patch)
tree2355dfc0f727a5c1724a94b1657be500754ac6b8
parent4c718fdbeacfc3385a493349b66b61c857b8e772 (diff)
[clang-tidy] rename designated initializers (#86976)
readability-identifier-naming now supports renaming designated initializers.
-rw-r--r--clang-tools-extra/clang-tidy/utils/RenamerClangTidyCheck.cpp22
-rw-r--r--clang-tools-extra/docs/ReleaseNotes.rst3
-rw-r--r--clang-tools-extra/test/clang-tidy/checkers/readability/identifier-naming.cpp10
3 files changed, 31 insertions, 4 deletions
diff --git a/clang-tools-extra/clang-tidy/utils/RenamerClangTidyCheck.cpp b/clang-tools-extra/clang-tidy/utils/RenamerClangTidyCheck.cpp
index da1433aa2d05..69b7d40ef628 100644
--- a/clang-tools-extra/clang-tidy/utils/RenamerClangTidyCheck.cpp
+++ b/clang-tools-extra/clang-tidy/utils/RenamerClangTidyCheck.cpp
@@ -31,13 +31,12 @@ struct DenseMapInfo<clang::tidy::RenamerClangTidyCheck::NamingCheckId> {
using NamingCheckId = clang::tidy::RenamerClangTidyCheck::NamingCheckId;
static inline NamingCheckId getEmptyKey() {
- return {DenseMapInfo<clang::SourceLocation>::getEmptyKey(),
- "EMPTY"};
+ return {DenseMapInfo<clang::SourceLocation>::getEmptyKey(), "EMPTY"};
}
static inline NamingCheckId getTombstoneKey() {
return {DenseMapInfo<clang::SourceLocation>::getTombstoneKey(),
- "TOMBSTONE"};
+ "TOMBSTONE"};
}
static unsigned getHashValue(NamingCheckId Val) {
@@ -367,6 +366,23 @@ public:
return true;
}
+ bool VisitDesignatedInitExpr(DesignatedInitExpr *Expr) {
+ for (const DesignatedInitExpr::Designator &D : Expr->designators()) {
+ if (!D.isFieldDesignator())
+ continue;
+ const FieldDecl *FD = D.getFieldDecl();
+ if (!FD)
+ continue;
+ const IdentifierInfo *II = FD->getIdentifier();
+ if (!II)
+ continue;
+ SourceRange FixLocation{D.getFieldLoc(), D.getFieldLoc()};
+ Check->addUsage(FD, FixLocation, SM);
+ }
+
+ return true;
+ }
+
private:
RenamerClangTidyCheck *Check;
const SourceManager *SM;
diff --git a/clang-tools-extra/docs/ReleaseNotes.rst b/clang-tools-extra/docs/ReleaseNotes.rst
index 2babb1406b97..bdd53f06e7e2 100644
--- a/clang-tools-extra/docs/ReleaseNotes.rst
+++ b/clang-tools-extra/docs/ReleaseNotes.rst
@@ -266,7 +266,8 @@ Changes in existing checks
- Improved :doc:`readability-identifier-naming
<clang-tidy/checks/readability/identifier-naming>` check in `GetConfigPerFile`
mode by resolving symbolic links to header files. Fixed handling of Hungarian
- Prefix when configured to `LowerCase`.
+ Prefix when configured to `LowerCase`. Added support for renaming designated
+ initializers.
- Improved :doc:`readability-implicit-bool-conversion
<clang-tidy/checks/readability/implicit-bool-conversion>` check to provide
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 d2e89a7c9855..57ef4aae5ddb 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
@@ -766,3 +766,13 @@ 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_s1{ .SomeMember = 1 };
+// CHECK-FIXES: {{^}}Some_struct g_s1{ .some_member = 1 };
+Some_struct g_s2{.SomeMember=1};
+// CHECK-FIXES: {{^}}Some_struct g_s2{.some_member=1};