On Tue, Aug 11, 2015 at 8:46 AM, Nico Weber via cfe-commits < cfe-commits@lists.llvm.org> wrote:
> Can't you just change your signature to > > virtual void a(int /* x */) {} > > in these cases? > You could - does it add much value to do that, though? (perhaps it does - it means you express the intent that the parameter is not used and the compiler helps you check that (so that for the parameters you think /should/ be used (you haven't commented out their name but accidentally shadow or otherwise fail to reference, you still get a warning)) - David > > On Tue, Aug 11, 2015 at 6:43 AM, Daniel Marjamäki < > cfe-commits@lists.llvm.org> wrote: > >> danielmarjamaki created this revision. >> danielmarjamaki added a reviewer: krememek. >> danielmarjamaki added a subscriber: cfe-commits. >> >> Don't diagnose -Wunused-parameter in methods that override other methods >> because the overridden methods might use the parameter >> >> Don't diagnose -Wunused-parameter in virtual methods because these might >> be overriden by other methods that use the parameter. >> >> Such diagnostics could be more accurately written if they are based on >> whole-program-analysis that establish if such parameter is unused in all >> methods. >> >> >> >> http://reviews.llvm.org/D11940 >> >> Files: >> lib/Sema/SemaDecl.cpp >> test/SemaCXX/warn-unused-parameters.cpp >> >> Index: test/SemaCXX/warn-unused-parameters.cpp >> =================================================================== >> --- test/SemaCXX/warn-unused-parameters.cpp >> +++ test/SemaCXX/warn-unused-parameters.cpp >> @@ -32,3 +32,20 @@ >> auto l = [&t...]() { return sizeof...(s); }; >> return l(); >> } >> + >> +// Don't diagnose virtual methods or methods that override base class >> +// methods. >> +class Base { >> +public: >> + virtual void f(int x); >> +}; >> + >> +class Derived : public Base { >> +public: >> + // Don't warn in overridden methods. >> + virtual void f(int x) {} >> + >> + // Don't warn in virtual methods. >> + virtual void a(int x) {} >> +}; >> + >> Index: lib/Sema/SemaDecl.cpp >> =================================================================== >> --- lib/Sema/SemaDecl.cpp >> +++ lib/Sema/SemaDecl.cpp >> @@ -10797,8 +10797,13 @@ >> >> if (!FD->isInvalidDecl()) { >> // Don't diagnose unused parameters of defaulted or deleted >> functions. >> - if (!FD->isDeleted() && !FD->isDefaulted()) >> - DiagnoseUnusedParameters(FD->param_begin(), FD->param_end()); >> + if (!FD->isDeleted() && !FD->isDefaulted()) { >> + // Don't diagnose unused parameters in virtual methods or >> + // in methods that override base class methods. >> + const auto MD = dyn_cast<CXXMethodDecl>(FD); >> + if (!MD || (MD->size_overridden_methods() == 0U && >> !MD->isVirtual())) >> + DiagnoseUnusedParameters(FD->param_begin(), FD->param_end()); >> + } >> DiagnoseSizeOfParametersAndReturnValue(FD->param_begin(), >> FD->param_end(), >> FD->getReturnType(), FD); >> >> >> >> >> _______________________________________________ >> cfe-commits mailing list >> cfe-commits@lists.llvm.org >> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits >> >> > > _______________________________________________ > cfe-commits mailing list > cfe-commits@lists.llvm.org > http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits > >
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits