diff options
| -rw-r--r-- | clang-tools-extra/clang-tidy/misc/UnusedParametersCheck.cpp | 5 | ||||
| -rw-r--r-- | clang-tools-extra/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 9f5f4daa1fe..1e342d1f6ae 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 feb3a142b66..ec1ee2d0119 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<void(int, int i)> dontGetConfusedByFunctionReturnTypes() { return Function<void(int, int)>(); } +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> +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) {} |

