From 785322c5e8f194910687ffa02b34fc2cc9b00126 Mon Sep 17 00:00:00 2001 From: Alexander Kornienko Date: Wed, 4 Jul 2018 15:19:49 +0000 Subject: [PATCH] [clang-tidy] Fix http://llvm.org/PR38055 llvm-svn: 336283 --- .../clang-tidy/misc/UnusedParametersCheck.cpp | 5 +++-- .../test/clang-tidy/misc-unused-parameters.cpp | 15 +++++++++++++++ 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/clang-tools-extra/clang-tidy/misc/UnusedParametersCheck.cpp b/clang-tools-extra/clang-tidy/misc/UnusedParametersCheck.cpp index 9f5f4da..1e342d1 100644 --- a/clang-tools-extra/clang-tidy/misc/UnusedParametersCheck.cpp +++ b/clang-tools-extra/clang-tidy/misc/UnusedParametersCheck.cpp @@ -159,8 +159,9 @@ void UnusedParametersCheck::warnOnUnusedParameter( MyDiag << removeParameter(Result, FD, ParamIndex); // Fix all call sites. - for (const auto *Call : Indexer->getFnCalls(Function)) - MyDiag << removeArgument(Result, Call, ParamIndex); + for (const CallExpr *Call : Indexer->getFnCalls(Function)) + if (ParamIndex < Call->getNumArgs()) // See PR38055 for example. + MyDiag << removeArgument(Result, Call, ParamIndex); } void UnusedParametersCheck::check(const MatchFinder::MatchResult &Result) { diff --git a/clang-tools-extra/test/clang-tidy/misc-unused-parameters.cpp b/clang-tools-extra/test/clang-tidy/misc-unused-parameters.cpp index feb3a14..ec1ee2d 100644 --- a/clang-tools-extra/test/clang-tidy/misc-unused-parameters.cpp +++ b/clang-tools-extra/test/clang-tidy/misc-unused-parameters.cpp @@ -222,6 +222,21 @@ static Function dontGetConfusedByFunctionReturnTypes() { return Function(); } +namespace PR38055 { +namespace { +struct a { + void b(int c) {;} +// CHECK-MESSAGES: :[[@LINE-1]]:14: warning: parameter 'c' is unused +// CHECK-FIXES: {{^}} void b() {;}{{$}} +}; +template +class d { + a e; + void f() { e.b(); } +}; +} // namespace +} // namespace PR38055 + namespace strict_mode_off { // Do not warn on empty function bodies. void f1(int foo1) {} -- 2.7.4