[clang-tools-extra] 1d3ad74 - [clang-tidy] Fix insertion location for certain function pointers in `cppcoreguidelines-init-variables` (#162218)
via cfe-commits
cfe-commits at lists.llvm.org
Fri Oct 10 06:13:53 PDT 2025
Author: flovent
Date: 2025-10-10T21:13:49+08:00
New Revision: 1d3ad74667e86a1ba19285e58d14156cce3de89d
URL: https://github.com/llvm/llvm-project/commit/1d3ad74667e86a1ba19285e58d14156cce3de89d
DIFF: https://github.com/llvm/llvm-project/commit/1d3ad74667e86a1ba19285e58d14156cce3de89d.diff
LOG: [clang-tidy] Fix insertion location for certain function pointers in `cppcoreguidelines-init-variables` (#162218)
This patch starts to find terminator from `VarDecl`'s end location
rather than it's `getLocation()` to ignore terminator(`,`) in function
paramaters list.
Kind of follow up to #112091
Closes #161978 .
Added:
Modified:
clang-tools-extra/clang-tidy/cppcoreguidelines/InitVariablesCheck.cpp
clang-tools-extra/docs/ReleaseNotes.rst
clang-tools-extra/test/clang-tidy/checkers/cppcoreguidelines/init-variables.cpp
Removed:
################################################################################
diff --git a/clang-tools-extra/clang-tidy/cppcoreguidelines/InitVariablesCheck.cpp b/clang-tools-extra/clang-tidy/cppcoreguidelines/InitVariablesCheck.cpp
index ed595e1148dec..2545548df4f45 100644
--- a/clang-tools-extra/clang-tidy/cppcoreguidelines/InitVariablesCheck.cpp
+++ b/clang-tools-extra/clang-tidy/cppcoreguidelines/InitVariablesCheck.cpp
@@ -108,7 +108,7 @@ void InitVariablesCheck::check(const MatchFinder::MatchResult &Result) {
<< MatchedDecl;
if (*InitializationString != nullptr)
Diagnostic << FixItHint::CreateInsertion(
- utils::lexer::findNextTerminator(MatchedDecl->getLocation(),
+ utils::lexer::findNextTerminator(MatchedDecl->getEndLoc(),
*Result.SourceManager,
Result.Context->getLangOpts()),
*InitializationString);
diff --git a/clang-tools-extra/docs/ReleaseNotes.rst b/clang-tools-extra/docs/ReleaseNotes.rst
index d2d79dcc92ec2..9aeda037bbdf9 100644
--- a/clang-tools-extra/docs/ReleaseNotes.rst
+++ b/clang-tools-extra/docs/ReleaseNotes.rst
@@ -307,6 +307,10 @@ Changes in existing checks
an additional matcher that generalizes the copy-and-swap idiom pattern
detection.
+- Improved :doc:`cppcoreguidelines-init-variables
+ <clang-tidy/checks/cppcoreguidelines/init-variables>` check by fixing the
+ insertion location for function pointers with multiple parameters.
+
- Improved :doc:`cppcoreguidelines-prefer-member-initializer
<clang-tidy/checks/cppcoreguidelines/prefer-member-initializer>` check to
avoid false positives on inherited members in class templates.
diff --git a/clang-tools-extra/test/clang-tidy/checkers/cppcoreguidelines/init-variables.cpp b/clang-tools-extra/test/clang-tidy/checkers/cppcoreguidelines/init-variables.cpp
index 6aa69642d39ed..8a8973a032bf2 100644
--- a/clang-tools-extra/test/clang-tidy/checkers/cppcoreguidelines/init-variables.cpp
+++ b/clang-tools-extra/test/clang-tidy/checkers/cppcoreguidelines/init-variables.cpp
@@ -148,3 +148,23 @@ namespace gh112089 {
}
} // namespace gh112089
+namespace gh161978 {
+ void test() {
+ bool (*fp1)(int);
+ // CHECK-MESSAGES: :[[@LINE-1]]:12: warning: variable 'fp1' is not initialized [cppcoreguidelines-init-variables]
+ // CHECK-FIXES: bool (*fp1)(int) = nullptr;
+ bool (*fp2)(int, int);
+ // CHECK-MESSAGES: :[[@LINE-1]]:12: warning: variable 'fp2' is not initialized [cppcoreguidelines-init-variables]
+ // CHECK-FIXES: bool (*fp2)(int, int) = nullptr;
+ bool (*fp3)(int, int, int);
+ // CHECK-MESSAGES: :[[@LINE-1]]:12: warning: variable 'fp3' is not initialized [cppcoreguidelines-init-variables]
+ // CHECK-FIXES: bool (*fp3)(int, int, int) = nullptr;
+ bool (*fp4)(int, int, int, ...);
+ // CHECK-MESSAGES: :[[@LINE-1]]:12: warning: variable 'fp4' is not initialized [cppcoreguidelines-init-variables]
+ // CHECK-FIXES: bool (*fp4)(int, int, int, ...) = nullptr;
+ bool (*fp5)(int, int), (*fp6)(int, int);
+ // CHECK-MESSAGES: :[[@LINE-1]]:12: warning: variable 'fp5' is not initialized [cppcoreguidelines-init-variables]
+ // CHECK-MESSAGES: :[[@LINE-2]]:30: warning: variable 'fp6' is not initialized [cppcoreguidelines-init-variables]
+ // CHECK-FIXES: bool (*fp5)(int, int) = nullptr, (*fp6)(int, int) = nullptr;
+ }
+}
More information about the cfe-commits
mailing list