summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--clang-tools-extra/clang-tidy/misc/UnusedParametersCheck.cpp3
-rw-r--r--clang-tools-extra/test/clang-tidy/misc-unused-parameters.c13
2 files changed, 15 insertions, 1 deletions
diff --git a/clang-tools-extra/clang-tidy/misc/UnusedParametersCheck.cpp b/clang-tools-extra/clang-tidy/misc/UnusedParametersCheck.cpp
index f7770cc8e40..326fb0595e0 100644
--- a/clang-tools-extra/clang-tidy/misc/UnusedParametersCheck.cpp
+++ b/clang-tools-extra/clang-tidy/misc/UnusedParametersCheck.cpp
@@ -97,7 +97,8 @@ void UnusedParametersCheck::warnOnUnusedParameter(
void UnusedParametersCheck::check(const MatchFinder::MatchResult &Result) {
const auto *Function = Result.Nodes.getNodeAs<FunctionDecl>("function");
- if (!Function->doesThisDeclarationHaveABody())
+ if (!Function->doesThisDeclarationHaveABody() ||
+ !Function->hasWrittenPrototype())
return;
for (unsigned i = 0, e = Function->getNumParams(); i != e; ++i) {
const auto *Param = Function->getParamDecl(i);
diff --git a/clang-tools-extra/test/clang-tidy/misc-unused-parameters.c b/clang-tools-extra/test/clang-tidy/misc-unused-parameters.c
new file mode 100644
index 00000000000..7c1ab34b7b5
--- /dev/null
+++ b/clang-tools-extra/test/clang-tidy/misc-unused-parameters.c
@@ -0,0 +1,13 @@
+// RUN: $(dirname %s)/check_clang_tidy.sh %s misc-unused-parameters %t -- -xc
+// REQUIRES: shell
+
+// Basic removal
+// =============
+void a(int i) {}
+// CHECK-MESSAGES: :[[@LINE-1]]:12: warning: parameter 'i' is unused [misc-unused-parameters]
+// CHECK-FIXES: {{^}}void a(int /*i*/) {}{{$}}
+
+// Unchanged cases
+// ===============
+void h(i, c, d) int i; char *c, *d; {} // Don't mess with K&R style
+
OpenPOWER on IntegriCloud