https://github.com/savchart updated 
https://github.com/llvm/llvm-project/pull/206809

>From dd7869dd81dd10d6d0b6c6f93d4a43f1d6931371 Mon Sep 17 00:00:00 2001
From: savchart <[email protected]>
Date: Tue, 30 Jun 2026 20:48:18 +0200
Subject: [PATCH 1/4] [clang-tidy] Fix identifier-naming style lookup in macro
 arguments

---
 .../readability/IdentifierNamingCheck.cpp     |  3 ++-
 .../identifier-naming-macro-argument.cpp      | 23 +++++++++++++++++++
 2 files changed, 25 insertions(+), 1 deletion(-)
 create mode 100644 
clang-tools-extra/test/clang-tidy/checkers/readability/identifier-naming-macro-argument.cpp

diff --git a/clang-tools-extra/clang-tidy/readability/IdentifierNamingCheck.cpp 
b/clang-tools-extra/clang-tidy/readability/IdentifierNamingCheck.cpp
index a356e1390b62d..2f66eb7248d1e 100644
--- a/clang-tools-extra/clang-tidy/readability/IdentifierNamingCheck.cpp
+++ b/clang-tools-extra/clang-tidy/readability/IdentifierNamingCheck.cpp
@@ -1395,7 +1395,8 @@ IdentifierNamingCheck::getDeclFailureInfo(const NamedDecl 
*Decl,
     return std::nullopt;
 
   const SourceLocation Loc = Decl->getLocation();
-  const FileStyle &FileStyle = getStyleForFile(SM.getFilename(Loc));
+  const SourceLocation StyleLoc = SM.getFileLoc(Loc);
+  const FileStyle &FileStyle = getStyleForFile(SM.getFilename(StyleLoc));
   if (!FileStyle.isActive())
     return std::nullopt;
 
diff --git 
a/clang-tools-extra/test/clang-tidy/checkers/readability/identifier-naming-macro-argument.cpp
 
b/clang-tools-extra/test/clang-tidy/checkers/readability/identifier-naming-macro-argument.cpp
new file mode 100644
index 0000000000000..9774da8c7b076
--- /dev/null
+++ 
b/clang-tools-extra/test/clang-tidy/checkers/readability/identifier-naming-macro-argument.cpp
@@ -0,0 +1,23 @@
+// RUN: %check_clang_tidy %s readability-identifier-naming %t -- \
+// RUN:   -config='{CheckOptions: { \
+// RUN:     readability-identifier-naming.FunctionCase: camelBack, \
+// RUN:     readability-identifier-naming.ParameterCase: camelBack, \
+// RUN:     readability-identifier-naming.VariableCase: camelBack \
+// RUN:   }}'
+
+#define WRAP(E) E
+
+WRAP(int foo(int v) { return v; })
+
+void testLambdaInMacroArgument() {
+  WRAP([](int var) {
+    return var;
+  }(1));
+}
+
+int badFunction(int BadParam) {
+  // CHECK-MESSAGES: :[[@LINE-1]]:21: warning: invalid case style for 
parameter 'BadParam' [readability-identifier-naming]
+  // CHECK-FIXES: int badFunction(int badParam) {
+  return BadParam;
+  // CHECK-FIXES: return badParam;
+}
\ No newline at end of file

>From 8df16ae197e04779b44ae2812cae8c8b04948f79 Mon Sep 17 00:00:00 2001
From: savchart <[email protected]>
Date: Wed, 1 Jul 2026 10:41:10 +0200
Subject: [PATCH 2/4] [clang-tidy] Add release note for identifier-naming macro
 fix

---
 clang-tools-extra/docs/ReleaseNotes.rst                        | 3 +++
 .../checkers/readability/identifier-naming-macro-argument.cpp  | 2 +-
 2 files changed, 4 insertions(+), 1 deletion(-)

diff --git a/clang-tools-extra/docs/ReleaseNotes.rst 
b/clang-tools-extra/docs/ReleaseNotes.rst
index fca6c21f22768..a412de4ad319c 100644
--- a/clang-tools-extra/docs/ReleaseNotes.rst
+++ b/clang-tools-extra/docs/ReleaseNotes.rst
@@ -758,6 +758,9 @@ Changes in existing checks
   - Fixed a false positive where function templates could be diagnosed as 
generic
     identifiers when `DefaultCase` was enabled.
 
+  - Fixed a false positive from naming style lookup for declarations inside 
macro
+    arguments.
+
 - 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-macro-argument.cpp
 
b/clang-tools-extra/test/clang-tidy/checkers/readability/identifier-naming-macro-argument.cpp
index 9774da8c7b076..ca34cf8edcbc8 100644
--- 
a/clang-tools-extra/test/clang-tidy/checkers/readability/identifier-naming-macro-argument.cpp
+++ 
b/clang-tools-extra/test/clang-tidy/checkers/readability/identifier-naming-macro-argument.cpp
@@ -20,4 +20,4 @@ int badFunction(int BadParam) {
   // CHECK-FIXES: int badFunction(int badParam) {
   return BadParam;
   // CHECK-FIXES: return badParam;
-}
\ No newline at end of file
+}

>From e628cdd07d0042b117438b982517969ca7556b26 Mon Sep 17 00:00:00 2001
From: savchart <[email protected]>
Date: Fri, 3 Jul 2026 22:54:49 +0200
Subject: [PATCH 3/4] [clang-tidy] Strengthen macro argument naming test

---
 .../.clang-tidy                               |  7 ++++
 .../subdir/.clang-tidy                        |  7 ++++
 .../identifier-naming-macro-argument.cpp      | 36 +++++++++++--------
 3 files changed, 36 insertions(+), 14 deletions(-)
 create mode 100644 
clang-tools-extra/test/clang-tidy/checkers/readability/Inputs/identifier-naming-macro-argument/.clang-tidy
 create mode 100644 
clang-tools-extra/test/clang-tidy/checkers/readability/Inputs/identifier-naming-macro-argument/subdir/.clang-tidy

diff --git 
a/clang-tools-extra/test/clang-tidy/checkers/readability/Inputs/identifier-naming-macro-argument/.clang-tidy
 
b/clang-tools-extra/test/clang-tidy/checkers/readability/Inputs/identifier-naming-macro-argument/.clang-tidy
new file mode 100644
index 0000000000000..5d84d2c80ba8a
--- /dev/null
+++ 
b/clang-tools-extra/test/clang-tidy/checkers/readability/Inputs/identifier-naming-macro-argument/.clang-tidy
@@ -0,0 +1,7 @@
+CheckOptions:
+  - key: readability-identifier-naming.FunctionCase
+    value: CamelCase
+  - key: readability-identifier-naming.ParameterCase
+    value: CamelCase
+  - key: readability-identifier-naming.VariableCase
+    value: CamelCase
diff --git 
a/clang-tools-extra/test/clang-tidy/checkers/readability/Inputs/identifier-naming-macro-argument/subdir/.clang-tidy
 
b/clang-tools-extra/test/clang-tidy/checkers/readability/Inputs/identifier-naming-macro-argument/subdir/.clang-tidy
new file mode 100644
index 0000000000000..26cc37466082c
--- /dev/null
+++ 
b/clang-tools-extra/test/clang-tidy/checkers/readability/Inputs/identifier-naming-macro-argument/subdir/.clang-tidy
@@ -0,0 +1,7 @@
+CheckOptions:
+  - key: readability-identifier-naming.FunctionCase
+    value: camelBack
+  - key: readability-identifier-naming.ParameterCase
+    value: camelBack
+  - key: readability-identifier-naming.VariableCase
+    value: camelBack
diff --git 
a/clang-tools-extra/test/clang-tidy/checkers/readability/identifier-naming-macro-argument.cpp
 
b/clang-tools-extra/test/clang-tidy/checkers/readability/identifier-naming-macro-argument.cpp
index ca34cf8edcbc8..1d5f92619b272 100644
--- 
a/clang-tools-extra/test/clang-tidy/checkers/readability/identifier-naming-macro-argument.cpp
+++ 
b/clang-tools-extra/test/clang-tidy/checkers/readability/identifier-naming-macro-argument.cpp
@@ -1,23 +1,31 @@
-// RUN: %check_clang_tidy %s readability-identifier-naming %t -- \
-// RUN:   -config='{CheckOptions: { \
-// RUN:     readability-identifier-naming.FunctionCase: camelBack, \
-// RUN:     readability-identifier-naming.ParameterCase: camelBack, \
-// RUN:     readability-identifier-naming.VariableCase: camelBack \
-// RUN:   }}'
+// RUN: rm -rf %t
+// RUN: mkdir -p %t/subdir
+// RUN: cp %S/Inputs/identifier-naming-macro-argument/.clang-tidy 
%t/.clang-tidy
+// RUN: cp %S/Inputs/identifier-naming-macro-argument/subdir/.clang-tidy 
%t/subdir/.clang-tidy
+// RUN: cp %s %t/subdir/test.cpp
+// RUN: clang-tidy %t/subdir/test.cpp \
+// RUN:   --checks=-*,readability-identifier-naming 2>&1 | FileCheck %s \
+// RUN:   -check-prefix=CHECK-MESSAGES
 
 #define WRAP(E) E
 
-WRAP(int foo(int v) { return v; })
+int goodFunction(int goodParam) {
+  int goodVariable = goodParam;
+  return goodVariable;
+}
+
+int wrappedExpression = WRAP(1);
+
+WRAP(int wrappedFunction(int wrappedParam) { return wrappedParam; })
 
-void testLambdaInMacroArgument() {
-  WRAP([](int var) {
-    return var;
+void callWrappedLambda() {
+  WRAP([](int wrappedParam) {
+    return wrappedParam;
   }(1));
 }
 
-int badFunction(int BadParam) {
-  // CHECK-MESSAGES: :[[@LINE-1]]:21: warning: invalid case style for 
parameter 'BadParam' [readability-identifier-naming]
-  // CHECK-FIXES: int badFunction(int badParam) {
+int BadFunction(int BadParam) {
+// CHECK-MESSAGES: :[[@LINE-1]]:5: warning: invalid case style for function 
'BadFunction'
+// CHECK-MESSAGES: :[[@LINE-2]]:21: warning: invalid case style for parameter 
'BadParam'
   return BadParam;
-  // CHECK-FIXES: return badParam;
 }

>From 5eee8bdf87b85ec2617aab556d2690acc59c2edd Mon Sep 17 00:00:00 2001
From: savchart <[email protected]>
Date: Sat, 4 Jul 2026 20:30:47 +0200
Subject: [PATCH 4/4] [clang-tidy] Fix identifier-naming config lookup in
 macros

---
 .../readability/IdentifierNamingCheck.cpp     |  4 ++--
 .../.clang-tidy                               |  3 +++
 .../include/macro.h                           |  1 +
 .../subdir/.clang-tidy                        |  3 +++
 .../identifier-naming-macro-argument.cpp      | 19 +++++++++----------
 5 files changed, 18 insertions(+), 12 deletions(-)
 create mode 100644 
clang-tools-extra/test/clang-tidy/checkers/readability/Inputs/identifier-naming-macro-argument/include/macro.h

diff --git a/clang-tools-extra/clang-tidy/readability/IdentifierNamingCheck.cpp 
b/clang-tools-extra/clang-tidy/readability/IdentifierNamingCheck.cpp
index 2f66eb7248d1e..19e080b42004d 100644
--- a/clang-tools-extra/clang-tidy/readability/IdentifierNamingCheck.cpp
+++ b/clang-tools-extra/clang-tidy/readability/IdentifierNamingCheck.cpp
@@ -1395,8 +1395,8 @@ IdentifierNamingCheck::getDeclFailureInfo(const NamedDecl 
*Decl,
     return std::nullopt;
 
   const SourceLocation Loc = Decl->getLocation();
-  const SourceLocation StyleLoc = SM.getFileLoc(Loc);
-  const FileStyle &FileStyle = getStyleForFile(SM.getFilename(StyleLoc));
+  const SourceLocation ConfigLoc = SM.getSpellingLoc(Loc);
+  const FileStyle &FileStyle = getStyleForFile(SM.getFilename(ConfigLoc));
   if (!FileStyle.isActive())
     return std::nullopt;
 
diff --git 
a/clang-tools-extra/test/clang-tidy/checkers/readability/Inputs/identifier-naming-macro-argument/.clang-tidy
 
b/clang-tools-extra/test/clang-tidy/checkers/readability/Inputs/identifier-naming-macro-argument/.clang-tidy
index 5d84d2c80ba8a..d6e48690be0bc 100644
--- 
a/clang-tools-extra/test/clang-tidy/checkers/readability/Inputs/identifier-naming-macro-argument/.clang-tidy
+++ 
b/clang-tools-extra/test/clang-tidy/checkers/readability/Inputs/identifier-naming-macro-argument/.clang-tidy
@@ -1,4 +1,7 @@
+Checks: '-*,readability-identifier-naming'
 CheckOptions:
+  - key: readability-identifier-naming.GetConfigPerFile
+    value: true
   - key: readability-identifier-naming.FunctionCase
     value: CamelCase
   - key: readability-identifier-naming.ParameterCase
diff --git 
a/clang-tools-extra/test/clang-tidy/checkers/readability/Inputs/identifier-naming-macro-argument/include/macro.h
 
b/clang-tools-extra/test/clang-tidy/checkers/readability/Inputs/identifier-naming-macro-argument/include/macro.h
new file mode 100644
index 0000000000000..42c125e4b028b
--- /dev/null
+++ 
b/clang-tools-extra/test/clang-tidy/checkers/readability/Inputs/identifier-naming-macro-argument/include/macro.h
@@ -0,0 +1 @@
+#define WRAP(E) ((void)(E))
diff --git 
a/clang-tools-extra/test/clang-tidy/checkers/readability/Inputs/identifier-naming-macro-argument/subdir/.clang-tidy
 
b/clang-tools-extra/test/clang-tidy/checkers/readability/Inputs/identifier-naming-macro-argument/subdir/.clang-tidy
index 26cc37466082c..f38c8a1b514fc 100644
--- 
a/clang-tools-extra/test/clang-tidy/checkers/readability/Inputs/identifier-naming-macro-argument/subdir/.clang-tidy
+++ 
b/clang-tools-extra/test/clang-tidy/checkers/readability/Inputs/identifier-naming-macro-argument/subdir/.clang-tidy
@@ -1,4 +1,7 @@
+Checks: '-*,readability-identifier-naming'
 CheckOptions:
+  - key: readability-identifier-naming.GetConfigPerFile
+    value: true
   - key: readability-identifier-naming.FunctionCase
     value: camelBack
   - key: readability-identifier-naming.ParameterCase
diff --git 
a/clang-tools-extra/test/clang-tidy/checkers/readability/identifier-naming-macro-argument.cpp
 
b/clang-tools-extra/test/clang-tidy/checkers/readability/identifier-naming-macro-argument.cpp
index 1d5f92619b272..c7ec7f421e7c8 100644
--- 
a/clang-tools-extra/test/clang-tidy/checkers/readability/identifier-naming-macro-argument.cpp
+++ 
b/clang-tools-extra/test/clang-tidy/checkers/readability/identifier-naming-macro-argument.cpp
@@ -1,31 +1,30 @@
 // RUN: rm -rf %t
-// RUN: mkdir -p %t/subdir
+// RUN: mkdir -p %t/include %t/subdir
 // RUN: cp %S/Inputs/identifier-naming-macro-argument/.clang-tidy 
%t/.clang-tidy
+// RUN: cp %S/Inputs/identifier-naming-macro-argument/include/macro.h 
%t/include/macro.h
 // RUN: cp %S/Inputs/identifier-naming-macro-argument/subdir/.clang-tidy 
%t/subdir/.clang-tidy
 // RUN: cp %s %t/subdir/test.cpp
 // RUN: clang-tidy %t/subdir/test.cpp \
-// RUN:   --checks=-*,readability-identifier-naming 2>&1 | FileCheck %s \
-// RUN:   -check-prefix=CHECK-MESSAGES
+// RUN:   --checks=-*,readability-identifier-naming \
+// RUN:   -- -I%t/include -std=c++17 2>&1 \
+// RUN:   | FileCheck %s -check-prefix=CHECK-MESSAGES \
+// RUN:       --implicit-check-not="{{warning|error}}:"
 
-#define WRAP(E) E
+#include "macro.h"
 
 int goodFunction(int goodParam) {
   int goodVariable = goodParam;
   return goodVariable;
 }
 
-int wrappedExpression = WRAP(1);
-
-WRAP(int wrappedFunction(int wrappedParam) { return wrappedParam; })
-
 void callWrappedLambda() {
   WRAP([](int wrappedParam) {
     return wrappedParam;
   }(1));
 }
 
+// CHECK-MESSAGES: :[[@LINE+2]]:5: warning: invalid case style for function 
'BadFunction'
+// CHECK-MESSAGES: :[[@LINE+1]]:21: warning: invalid case style for parameter 
'BadParam'
 int BadFunction(int BadParam) {
-// CHECK-MESSAGES: :[[@LINE-1]]:5: warning: invalid case style for function 
'BadFunction'
-// CHECK-MESSAGES: :[[@LINE-2]]:21: warning: invalid case style for parameter 
'BadParam'
   return BadParam;
 }

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

Reply via email to