[clang-tidy] Fix false-positive in inconsistent-declaration-parameter-name (#170593)

Closes #169195
This commit is contained in:
mitchell
2025-12-04 17:43:19 +08:00
committed by GitHub
parent fda85a1423
commit 29afd5a9ff
3 changed files with 32 additions and 0 deletions

View File

@@ -107,6 +107,10 @@ findDifferingParamsInDeclaration(const FunctionDecl *ParameterSourceDeclaration,
while (SourceParamIt != ParameterSourceDeclaration->param_end() &&
OtherParamIt != OtherDeclaration->param_end()) {
if ((*SourceParamIt)->isParameterPack() !=
(*OtherParamIt)->isParameterPack())
break;
auto SourceParamName = (*SourceParamIt)->getName();
auto OtherParamName = (*OtherParamIt)->getName();

View File

@@ -558,6 +558,11 @@ Changes in existing checks
adding parentheses when the inner expression are implicitly converted
multiple times.
- Improved :doc:`readability-inconsistent-declaration-parameter-name
<clang-tidy/checks/readability/inconsistent-declaration-parameter-name>` check
by not enforcing parameter name consistency between a variadic parameter pack
in the primary template and specific parameters in its specializations.
- Improved :doc:`readability-qualified-auto
<clang-tidy/checks/readability/qualified-auto>` check by adding the option
`IgnoreAliasing`, that allows not looking at underlying types of type aliases.

View File

@@ -191,3 +191,26 @@ struct S {
void S::f(int y)
{
}
//////////////////////////////////////////////////////
template<typename... Args>
void variadicFunctionNoWarning(Args... args);
template<>
void variadicFunctionNoWarning(int a) {}
template<>
void variadicFunctionNoWarning(int a, int b) {}
template<typename... Args>
void variadicFunction2WithWarning(int fixed, Args... args);
template<>
void variadicFunction2WithWarning(int fixed, int a) {}
template<>
// CHECK-MESSAGES: :[[@LINE+3]]:6: warning: function template specialization 'variadicFunction2WithWarning<float>' has a primary template
// CHECK-MESSAGES: :[[@LINE-7]]:6: note: the primary template declaration seen here
// CHECK-MESSAGES: :[[@LINE+1]]:6: note: differing parameters are named here: ('wrong'), in primary template declaration: ('fixed')
void variadicFunction2WithWarning(int wrong, float a) {}