Author: savchart Date: 2026-07-13T00:21:49+08:00 New Revision: 715cf355b1324117a4456cd79bd05df39f65643c
URL: https://github.com/llvm/llvm-project/commit/715cf355b1324117a4456cd79bd05df39f65643c DIFF: https://github.com/llvm/llvm-project/commit/715cf355b1324117a4456cd79bd05df39f65643c.diff LOG: [clang-tidy] Fix identifier-naming style lookup in macro arguments (#206809) Problem statement: the var lambda parameter was written inside a macro argument. The declaration location was treated as a macro location, and the filename lookup returned an empty filename for that location. Fix: use a file location for the style lookup. Alternative options considered were spelling location and expansion location. Fixes #154957 Assisted-by: GPT --------- Co-authored-by: Zeyi Xu <[email protected]> Co-authored-by: Baranov Victor <[email protected]> Added: clang-tools-extra/test/clang-tidy/checkers/readability/Inputs/identifier-naming-macro-argument/.clang-tidy clang-tools-extra/test/clang-tidy/checkers/readability/Inputs/identifier-naming-macro-argument/include/macro.h clang-tools-extra/test/clang-tidy/checkers/readability/Inputs/identifier-naming-macro-argument/subdir/.clang-tidy clang-tools-extra/test/clang-tidy/checkers/readability/identifier-naming-macro-argument.cpp Modified: clang-tools-extra/clang-tidy/readability/IdentifierNamingCheck.cpp clang-tools-extra/docs/ReleaseNotes.rst Removed: ################################################################################ diff --git a/clang-tools-extra/clang-tidy/readability/IdentifierNamingCheck.cpp b/clang-tools-extra/clang-tidy/readability/IdentifierNamingCheck.cpp index a356e1390b62d..42f3101592758 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 SpellingLoc = SM.getSpellingLoc(Loc); + const FileStyle &FileStyle = getStyleForFile(SM.getFilename(SpellingLoc)); if (!FileStyle.isActive()) return std::nullopt; diff --git a/clang-tools-extra/docs/ReleaseNotes.rst b/clang-tools-extra/docs/ReleaseNotes.rst index f43b90f5a2386..2581a9d3c5657 100644 --- a/clang-tools-extra/docs/ReleaseNotes.rst +++ b/clang-tools-extra/docs/ReleaseNotes.rst @@ -836,6 +836,9 @@ Changes in existing checks - Fixed a crash in dependent base lookup when `AggressiveDependentMemberLookup` option is 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/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..d6e48690be0bc --- /dev/null +++ b/clang-tools-extra/test/clang-tidy/checkers/readability/Inputs/identifier-naming-macro-argument/.clang-tidy @@ -0,0 +1,10 @@ +Checks: '-*,readability-identifier-naming' +CheckOptions: + - key: readability-identifier-naming.GetConfigPerFile + value: true + - 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/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 new file mode 100644 index 0000000000000..f38c8a1b514fc --- /dev/null +++ b/clang-tools-extra/test/clang-tidy/checkers/readability/Inputs/identifier-naming-macro-argument/subdir/.clang-tidy @@ -0,0 +1,10 @@ +Checks: '-*,readability-identifier-naming' +CheckOptions: + - key: readability-identifier-naming.GetConfigPerFile + value: true + - 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 new file mode 100644 index 0000000000000..c7ec7f421e7c8 --- /dev/null +++ b/clang-tools-extra/test/clang-tidy/checkers/readability/identifier-naming-macro-argument.cpp @@ -0,0 +1,30 @@ +// RUN: rm -rf %t +// 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 \ +// RUN: -- -I%t/include -std=c++17 2>&1 \ +// RUN: | FileCheck %s -check-prefix=CHECK-MESSAGES \ +// RUN: --implicit-check-not="{{warning|error}}:" + +#include "macro.h" + +int goodFunction(int goodParam) { + int goodVariable = goodParam; + return goodVariable; +} + +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) { + return BadParam; +} _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
