[clang-tidy] misc-unused-parameters: don't comment out parameter name for C code

Summary: The fixit `int square(int /*num*/)` yields `error: parameter name omitted` for C code. Enable it only for C++ code.

Reviewers: klimek, ilya-biryukov, lebedev.ri, aaron.ballman

Subscribers: xazax.hun, cfe-commits

Tags: #clang

Differential Revision: https://reviews.llvm.org/D63088

llvm-svn: 364106
This commit is contained in:
Matthias Gehre 2019-06-21 21:30:25 +00:00
parent 19c4d660f4
commit eeb3f99d23
2 changed files with 10 additions and 5 deletions

View File

@ -138,14 +138,19 @@ void UnusedParametersCheck::warnOnUnusedParameter(
Indexer = llvm::make_unique<IndexerVisitor>(*Result.Context);
}
// Comment out parameter name for non-local functions.
// Cannot remove parameter for non-local functions.
if (Function->isExternallyVisible() ||
!Result.SourceManager->isInMainFile(Function->getLocation()) ||
!Indexer->getOtherRefs(Function).empty() || isOverrideMethod(Function)) {
// It is illegal to omit parameter name here in C code, so early-out.
if (!Result.Context->getLangOpts().CPlusPlus)
return;
SourceRange RemovalRange(Param->getLocation());
// Note: We always add a space before the '/*' to not accidentally create a
// '*/*' for pointer types, which doesn't start a comment. clang-format will
// clean this up afterwards.
// Note: We always add a space before the '/*' to not accidentally create
// a '*/*' for pointer types, which doesn't start a comment. clang-format
// will clean this up afterwards.
MyDiag << FixItHint::CreateReplacement(
RemovalRange, (Twine(" /*") + Param->getName() + "*/").str());
return;

View File

@ -4,7 +4,7 @@
// =============
void a(int i) {;}
// CHECK-MESSAGES: :[[@LINE-1]]:12: warning: parameter 'i' is unused [misc-unused-parameters]
// CHECK-FIXES: {{^}}void a(int /*i*/) {;}{{$}}
// CHECK-FIXES: {{^}}void a(int i) {;}{{$}}
static void b(); // In C, forward declarations can leave out parameters.
static void b(int i) {;}