Author: djasper Date: Wed Jul 22 12:30:35 2015 New Revision: 242912 URL: http://llvm.org/viewvc/llvm-project?rev=242912&view=rev Log: misc-unused-parameters: Fix handling of parameters in template functions.
The parameters of the function templates were being marked as incorrectly be marked as unused. Added a test for this and changed the check to use the same isReferenced() || !getDeclName() logic as Sema::DiagnoseUnusedParameters. Patch Scott Wallace, thank you! Modified: clang-tools-extra/trunk/clang-tidy/misc/UnusedParametersCheck.cpp clang-tools-extra/trunk/test/clang-tidy/misc-unused-parameters.cpp Modified: clang-tools-extra/trunk/clang-tidy/misc/UnusedParametersCheck.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/misc/UnusedParametersCheck.cpp?rev=242912&r1=242911&r2=242912&view=diff ============================================================================== --- clang-tools-extra/trunk/clang-tidy/misc/UnusedParametersCheck.cpp (original) +++ clang-tools-extra/trunk/clang-tidy/misc/UnusedParametersCheck.cpp Wed Jul 22 12:30:35 2015 @@ -59,7 +59,8 @@ void UnusedParametersCheck::check(const if (!Function->doesThisDeclarationHaveABody()) return; const auto *Param = Result.Nodes.getNodeAs<ParmVarDecl>("x"); - if (Param->isUsed()) + if (Param->isUsed() || Param->isReferenced() || !Param->getDeclName() || + Param->hasAttr<UnusedAttr>()) return; auto MyDiag = diag(Param->getLocation(), "parameter '%0' is unused") @@ -102,4 +103,3 @@ void UnusedParametersCheck::check(const } // namespace tidy } // namespace clang - Modified: clang-tools-extra/trunk/test/clang-tidy/misc-unused-parameters.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-tidy/misc-unused-parameters.cpp?rev=242912&r1=242911&r2=242912&view=diff ============================================================================== --- clang-tools-extra/trunk/test/clang-tidy/misc-unused-parameters.cpp (original) +++ clang-tools-extra/trunk/test/clang-tidy/misc-unused-parameters.cpp Wed Jul 22 12:30:35 2015 @@ -88,3 +88,14 @@ void someMoreCallSites() { } } // end namespace + +template <typename T> void someFunctionTemplate(T b, T e) { (void)b; (void)e; } + +template <typename T> void someFunctionTemplateOneUnusedParam(T b, T e) { (void)e; } +// CHECK-MESSAGES: :[[@LINE-1]]:65: warning +// CHECK-FIXES: {{^}}template <typename T> void someFunctionTemplateOneUnusedParam(T /*b*/, T e) { (void)e; } + +template <typename T> void someFunctionTemplateAllUnusedParams(T b, T e) {} +// CHECK-MESSAGES: :[[@LINE-1]]:66: warning +// CHECK-MESSAGES: :[[@LINE-2]]:71: warning +// CHECK-FIXES: {{^}}template <typename T> void someFunctionTemplateAllUnusedParams(T /*b*/, T /*e*/) {} _______________________________________________ cfe-commits mailing list cfe-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits