https://github.com/zeyi2 updated 
https://github.com/llvm/llvm-project/pull/189788

>From 945d2ecf2782ebed920265ae7aaefab3830aae25 Mon Sep 17 00:00:00 2001
From: mtx <[email protected]>
Date: Wed, 1 Apr 2026 10:48:47 +0800
Subject: [PATCH 1/6] [clang-tidy] Fix readability-identifier-naming FP with
 DefaultCase on function templates

---
 .../utils/RenamerClangTidyCheck.cpp           |  4 +++
 clang-tools-extra/docs/ReleaseNotes.rst       |  9 ++++--
 ...ntifier-naming-template-method-default.cpp | 30 +++++++++++++++++++
 3 files changed, 41 insertions(+), 2 deletions(-)
 create mode 100644 
clang-tools-extra/test/clang-tidy/checkers/readability/identifier-naming-template-method-default.cpp

diff --git a/clang-tools-extra/clang-tidy/utils/RenamerClangTidyCheck.cpp 
b/clang-tools-extra/clang-tidy/utils/RenamerClangTidyCheck.cpp
index 0e4a6f49116da..7291bf121f1af 100644
--- a/clang-tools-extra/clang-tidy/utils/RenamerClangTidyCheck.cpp
+++ b/clang-tools-extra/clang-tidy/utils/RenamerClangTidyCheck.cpp
@@ -116,6 +116,10 @@ static bool hasNoName(const NamedDecl *Decl) {
 }
 
 static const NamedDecl *getFailureForNamedDecl(const NamedDecl *ND) {
+  if (const auto *Template = dyn_cast<FunctionTemplateDecl>(ND))
+    if (const FunctionDecl *TemplatedDecl = Template->getTemplatedDecl())
+      ND = TemplatedDecl;
+
   const auto *Canonical = cast<NamedDecl>(ND->getCanonicalDecl());
   if (Canonical != ND)
     return Canonical;
diff --git a/clang-tools-extra/docs/ReleaseNotes.rst 
b/clang-tools-extra/docs/ReleaseNotes.rst
index 69dc5b9633398..5830adf1ebcc7 100644
--- a/clang-tools-extra/docs/ReleaseNotes.rst
+++ b/clang-tools-extra/docs/ReleaseNotes.rst
@@ -217,7 +217,7 @@ Changes in existing checks
   C++ files because suggested ``reinterpret_cast`` is not available in pure C.
 
 - Improved :doc:`bugprone-derived-method-shadowing-base-method
-  <clang-tidy/checks/bugprone/derived-method-shadowing-base-method>` check by 
+  <clang-tidy/checks/bugprone/derived-method-shadowing-base-method>` check by
   correctly ignoring function templates.
 
 - Improved :doc:`bugprone-exception-escape
@@ -248,7 +248,7 @@ Changes in existing checks
   <clang-tidy/checks/bugprone/std-namespace-modification>` check by fixing
   false positives when extending the standard library with a specialization of
   user-defined type and by removing detection of the compiler generated ``std``
-  namespace extensions. 
+  namespace extensions.
 
 - Improved :doc:`bugprone-string-constructor
   <clang-tidy/checks/bugprone/string-constructor>` check to detect suspicious
@@ -422,6 +422,11 @@ Changes in existing checks
   now uses separate note diagnostics for each uninitialized enumerator, making
   it easier to see which specific enumerators need explicit initialization.
 
+- Improved :doc:`readability-identifier-naming
+  <clang-tidy/checks/readability/identifier-naming>` check by fixing a false
+  positive where function templates could be diagnosed as generic identifiers
+  when ``DefaultCase`` was enabled.
+
 - Improved :doc:`readability-implicit-bool-conversion
   <clang-tidy/checks/readability/implicit-bool-conversion>` check:
 
diff --git 
a/clang-tools-extra/test/clang-tidy/checkers/readability/identifier-naming-template-method-default.cpp
 
b/clang-tools-extra/test/clang-tidy/checkers/readability/identifier-naming-template-method-default.cpp
new file mode 100644
index 0000000000000..d094e3ac71728
--- /dev/null
+++ 
b/clang-tools-extra/test/clang-tidy/checkers/readability/identifier-naming-template-method-default.cpp
@@ -0,0 +1,30 @@
+// RUN: %check_clang_tidy %s readability-identifier-naming %t 
-std=c++20-or-later \
+// RUN:   --config='{CheckOptions: { \
+// RUN:     readability-identifier-naming.DefaultCase: lower_case, \
+// RUN:     readability-identifier-naming.ClassCase: CamelCase, \
+// RUN:     readability-identifier-naming.FunctionCase: camelBack, \
+// RUN:     readability-identifier-naming.MethodCase: camelBack, \
+// RUN:  }}'
+
+class Foo {
+public:
+  template <typename t>
+  void doStuff() {}
+
+  template <typename t>
+  void DoStuff() {}
+  // CHECK-MESSAGES: :[[@LINE-1]]:8: warning: invalid case style for method 
'DoStuff' [readability-identifier-naming]
+  // CHECK-FIXES: void doStuff() {}
+};
+
+template <typename t>
+void freeFunction() {}
+
+template <typename t>
+void FreeFunction() {}
+// CHECK-MESSAGES: :[[@LINE-1]]:6: warning: invalid case style for function 
'FreeFunction' [readability-identifier-naming]
+// CHECK-FIXES: void freeFunction() {}
+
+int BadGlobal = 0;
+// CHECK-MESSAGES: :[[@LINE-1]]:5: warning: invalid case style for identifier 
'BadGlobal' [readability-identifier-naming]
+// CHECK-FIXES: int bad_global = 0;

>From 1e1693a25820fc420e0b9bcedd0b7b2015733b49 Mon Sep 17 00:00:00 2001
From: Zeyi Xu <[email protected]>
Date: Wed, 1 Apr 2026 15:00:41 +0800
Subject: [PATCH 2/6] Update clang-tools-extra/docs/ReleaseNotes.rst

Co-authored-by: EugeneZelenko <[email protected]>
---
 clang-tools-extra/docs/ReleaseNotes.rst | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/clang-tools-extra/docs/ReleaseNotes.rst 
b/clang-tools-extra/docs/ReleaseNotes.rst
index 5830adf1ebcc7..83c1a982ee00d 100644
--- a/clang-tools-extra/docs/ReleaseNotes.rst
+++ b/clang-tools-extra/docs/ReleaseNotes.rst
@@ -425,7 +425,7 @@ Changes in existing checks
 - Improved :doc:`readability-identifier-naming
   <clang-tidy/checks/readability/identifier-naming>` check by fixing a false
   positive where function templates could be diagnosed as generic identifiers
-  when ``DefaultCase`` was enabled.
+  when `DefaultCase` was enabled.
 
 - Improved :doc:`readability-implicit-bool-conversion
   <clang-tidy/checks/readability/implicit-bool-conversion>` check:

>From d3860f66493b0a5241bc2396953ced4bf73ad5ba Mon Sep 17 00:00:00 2001
From: mtx <[email protected]>
Date: Fri, 3 Apr 2026 11:11:42 +0800
Subject: [PATCH 3/6] fixup fixup fixup

---
 .../utils/RenamerClangTidyCheck.cpp           |  8 +++--
 ...ntifier-naming-template-method-default.cpp | 35 +++++++++++++++++--
 2 files changed, 38 insertions(+), 5 deletions(-)

diff --git a/clang-tools-extra/clang-tidy/utils/RenamerClangTidyCheck.cpp 
b/clang-tools-extra/clang-tidy/utils/RenamerClangTidyCheck.cpp
index 7291bf121f1af..bfc6a80313549 100644
--- a/clang-tools-extra/clang-tidy/utils/RenamerClangTidyCheck.cpp
+++ b/clang-tools-extra/clang-tidy/utils/RenamerClangTidyCheck.cpp
@@ -116,9 +116,8 @@ static bool hasNoName(const NamedDecl *Decl) {
 }
 
 static const NamedDecl *getFailureForNamedDecl(const NamedDecl *ND) {
-  if (const auto *Template = dyn_cast<FunctionTemplateDecl>(ND))
-    if (const FunctionDecl *TemplatedDecl = Template->getTemplatedDecl())
-      ND = TemplatedDecl;
+  if (isa<FunctionTemplateDecl, ClassTemplateDecl, VarTemplateDecl>(ND))
+    ND = cast<RedeclarableTemplateDecl>(ND)->getTemplatedDecl();
 
   const auto *Canonical = cast<NamedDecl>(ND->getCanonicalDecl());
   if (Canonical != ND)
@@ -274,6 +273,9 @@ class RenamerClangTidyVisitor
   }
 
   bool VisitNamedDecl(NamedDecl *Decl) {
+    if (isa<TypeAliasTemplateDecl>(Decl))
+      return true;
+
     const SourceRange UsageRange =
         DeclarationNameInfo(Decl->getDeclName(), Decl->getLocation())
             .getSourceRange();
diff --git 
a/clang-tools-extra/test/clang-tidy/checkers/readability/identifier-naming-template-method-default.cpp
 
b/clang-tools-extra/test/clang-tidy/checkers/readability/identifier-naming-template-method-default.cpp
index d094e3ac71728..e90ff5ecff3b0 100644
--- 
a/clang-tools-extra/test/clang-tidy/checkers/readability/identifier-naming-template-method-default.cpp
+++ 
b/clang-tools-extra/test/clang-tidy/checkers/readability/identifier-naming-template-method-default.cpp
@@ -3,9 +3,16 @@
 // RUN:     readability-identifier-naming.DefaultCase: lower_case, \
 // RUN:     readability-identifier-naming.ClassCase: CamelCase, \
 // RUN:     readability-identifier-naming.FunctionCase: camelBack, \
+// RUN:     readability-identifier-naming.GlobalVariableCase: camelBack, \
 // RUN:     readability-identifier-naming.MethodCase: camelBack, \
+// RUN:     readability-identifier-naming.TypeAliasCase: lower_case, \
+// RUN:     readability-identifier-naming.TypeAliasSuffix: _t, \
 // RUN:  }}'
 
+#define BadMacro
+// CHECK-MESSAGES: :[[@LINE-1]]:9: warning: invalid case style for identifier 
'BadMacro' [readability-identifier-naming]
+// CHECK-FIXES: #define bad_macro
+
 class Foo {
 public:
   template <typename t>
@@ -25,6 +32,30 @@ void FreeFunction() {}
 // CHECK-MESSAGES: :[[@LINE-1]]:6: warning: invalid case style for function 
'FreeFunction' [readability-identifier-naming]
 // CHECK-FIXES: void freeFunction() {}
 
+template <typename t>
+class GoodClass {};
+
+template <typename t>
+class badClass {};
+// CHECK-MESSAGES: :[[@LINE-1]]:7: warning: invalid case style for class 
'badClass' [readability-identifier-naming]
+// CHECK-FIXES: class BadClass {};
+
+template <typename t>
+int goodVariable = 0;
+
+template <typename t>
+int BadVariable = 0;
+// CHECK-MESSAGES: :[[@LINE-1]]:5: warning: invalid case style for global 
variable 'BadVariable' [readability-identifier-naming]
+// CHECK-FIXES: int badVariable = 0;
+
+template <typename t>
+using good_alias_t = int;
+
+template <typename t>
+using BadAlias = int;
+// CHECK-MESSAGES: :[[@LINE-1]]:7: warning: invalid case style for type alias 
'BadAlias' [readability-identifier-naming]
+// CHECK-FIXES: using bad_alias_t = int;
+
 int BadGlobal = 0;
-// CHECK-MESSAGES: :[[@LINE-1]]:5: warning: invalid case style for identifier 
'BadGlobal' [readability-identifier-naming]
-// CHECK-FIXES: int bad_global = 0;
+// CHECK-MESSAGES: :[[@LINE-1]]:5: warning: invalid case style for global 
variable 'BadGlobal' [readability-identifier-naming]
+// CHECK-FIXES: int badGlobal = 0;

>From e547f7eb7d6389199e577fe3267a64d970741c02 Mon Sep 17 00:00:00 2001
From: mtx <[email protected]>
Date: Fri, 3 Apr 2026 18:07:24 +0800
Subject: [PATCH 4/6] fixup fixup fixup fixup

---
 .../clang-tidy/utils/RenamerClangTidyCheck.cpp              | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/clang-tools-extra/clang-tidy/utils/RenamerClangTidyCheck.cpp 
b/clang-tools-extra/clang-tidy/utils/RenamerClangTidyCheck.cpp
index bfc6a80313549..d5f18565bb490 100644
--- a/clang-tools-extra/clang-tidy/utils/RenamerClangTidyCheck.cpp
+++ b/clang-tools-extra/clang-tidy/utils/RenamerClangTidyCheck.cpp
@@ -116,9 +116,6 @@ static bool hasNoName(const NamedDecl *Decl) {
 }
 
 static const NamedDecl *getFailureForNamedDecl(const NamedDecl *ND) {
-  if (isa<FunctionTemplateDecl, ClassTemplateDecl, VarTemplateDecl>(ND))
-    ND = cast<RedeclarableTemplateDecl>(ND)->getTemplatedDecl();
-
   const auto *Canonical = cast<NamedDecl>(ND->getCanonicalDecl());
   if (Canonical != ND)
     return Canonical;
@@ -273,7 +270,8 @@ class RenamerClangTidyVisitor
   }
 
   bool VisitNamedDecl(NamedDecl *Decl) {
-    if (isa<TypeAliasTemplateDecl>(Decl))
+    if (isa<FunctionTemplateDecl, ClassTemplateDecl, VarTemplateDecl,
+            TypeAliasTemplateDecl>(Decl))
       return true;
 
     const SourceRange UsageRange =

>From 9e08e57bce6abdec315c10ddeb2f98253b82838b Mon Sep 17 00:00:00 2001
From: mtx <[email protected]>
Date: Sun, 5 Apr 2026 18:24:54 +0800
Subject: [PATCH 5/6] ~

---
 .../clang-tidy/readability/IdentifierNamingCheck.cpp          | 4 ++++
 clang-tools-extra/clang-tidy/utils/RenamerClangTidyCheck.cpp  | 4 ----
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/clang-tools-extra/clang-tidy/readability/IdentifierNamingCheck.cpp 
b/clang-tools-extra/clang-tidy/readability/IdentifierNamingCheck.cpp
index 871eaeec69021..adbf879c8af5d 100644
--- a/clang-tools-extra/clang-tidy/readability/IdentifierNamingCheck.cpp
+++ b/clang-tools-extra/clang-tidy/readability/IdentifierNamingCheck.cpp
@@ -1303,6 +1303,10 @@ StyleKind IdentifierNamingCheck::findStyleKind(
       return SK_Function;
   }
 
+  if (isa<FunctionTemplateDecl, ClassTemplateDecl, VarTemplateDecl,
+          TypeAliasTemplateDecl>(D))
+    return SK_Invalid;
+
   if (isa<TemplateTypeParmDecl>(D)) {
     if (NamingStyles[SK_TypeTemplateParameter])
       return SK_TypeTemplateParameter;
diff --git a/clang-tools-extra/clang-tidy/utils/RenamerClangTidyCheck.cpp 
b/clang-tools-extra/clang-tidy/utils/RenamerClangTidyCheck.cpp
index d5f18565bb490..0e4a6f49116da 100644
--- a/clang-tools-extra/clang-tidy/utils/RenamerClangTidyCheck.cpp
+++ b/clang-tools-extra/clang-tidy/utils/RenamerClangTidyCheck.cpp
@@ -270,10 +270,6 @@ class RenamerClangTidyVisitor
   }
 
   bool VisitNamedDecl(NamedDecl *Decl) {
-    if (isa<FunctionTemplateDecl, ClassTemplateDecl, VarTemplateDecl,
-            TypeAliasTemplateDecl>(Decl))
-      return true;
-
     const SourceRange UsageRange =
         DeclarationNameInfo(Decl->getDeclName(), Decl->getLocation())
             .getSourceRange();

>From 811ba57af3eb062f4fcf0ecd0df9f43aa9fcbf17 Mon Sep 17 00:00:00 2001
From: Zeyi Xu <[email protected]>
Date: Thu, 9 Apr 2026 09:16:10 +0800
Subject: [PATCH 6/6] Update clang-tools-extra/docs/ReleaseNotes.rst

Co-authored-by: Daniil Dudkin <[email protected]>
---
 clang-tools-extra/docs/ReleaseNotes.rst | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/clang-tools-extra/docs/ReleaseNotes.rst 
b/clang-tools-extra/docs/ReleaseNotes.rst
index 53f6a227829cb..a0cc8a0bdf57b 100644
--- a/clang-tools-extra/docs/ReleaseNotes.rst
+++ b/clang-tools-extra/docs/ReleaseNotes.rst
@@ -429,7 +429,7 @@ Changes in existing checks
   it easier to see which specific enumerators need explicit initialization.
 
 - Improved :doc:`readability-identifier-naming
-  <clang-tidy/checks/readability/identifier-naming>` check by 
+  <clang-tidy/checks/readability/identifier-naming>` check:
 
   - Fixed incorrect naming style application to C++17 structured bindings.
 

_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to