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
