compilerplugins/clang/test/unnecessaryoverride.cxx | 31 +++++++++++++++++++++ compilerplugins/clang/unnecessaryoverride.cxx | 28 ++++++++++++++---- include/svx/svdview.hxx | 2 - svx/source/svdraw/svdview.cxx | 5 --- ucb/source/ucp/cmis/cmis_datasupplier.cxx | 9 ++---- ucb/source/ucp/cmis/cmis_datasupplier.hxx | 2 - ucb/source/ucp/ftp/ftpdirp.cxx | 3 -- ucb/source/ucp/ftp/ftpdirp.hxx | 2 - ucb/source/ucp/webdav-neon/webdavcontent.cxx | 4 +- ucb/source/ucp/webdav-neon/webdavcontentcaps.cxx | 4 -- ucb/source/ucp/webdav-neon/webdavprovider.hxx | 2 - 11 files changed, 63 insertions(+), 29 deletions(-)
New commits: commit 7d13fe52bdb31d1263148567fec009df1de6e330 Author: Noel Grandin <noel.gran...@collabora.co.uk> AuthorDate: Mon Jul 30 15:35:13 2018 +0200 Commit: Noel Grandin <noel.gran...@collabora.co.uk> CommitDate: Tue Jul 31 14:59:41 2018 +0200 loplugin:returnconstant in ucb Change-Id: I2810468e64bba8bc9f8af4dff170bc1ab310fe2f Reviewed-on: https://gerrit.libreoffice.org/58337 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk> diff --git a/ucb/source/ucp/cmis/cmis_datasupplier.cxx b/ucb/source/ucp/cmis/cmis_datasupplier.cxx index 13133a2d27ad..01819ad36a03 100644 --- a/ucb/source/ucp/cmis/cmis_datasupplier.cxx +++ b/ucb/source/ucp/cmis/cmis_datasupplier.cxx @@ -30,10 +30,10 @@ namespace cmis { } - bool DataSupplier::getData() + void DataSupplier::getData() { if ( mbCountFinal ) - return true; + return; std::vector< uno::Reference< ucb::XContent > > aChildren = m_pChildrenProvider->getChildren( ); @@ -51,8 +51,6 @@ namespace cmis } } mbCountFinal = true; - - return true; } DataSupplier::~DataSupplier() @@ -90,7 +88,8 @@ namespace cmis if ( maResults.size() > nIndex ) // Result already present. return true; - if ( getData() && maResults.size() > nIndex ) + getData(); + if ( maResults.size() > nIndex ) return true; return false; diff --git a/ucb/source/ucp/cmis/cmis_datasupplier.hxx b/ucb/source/ucp/cmis/cmis_datasupplier.hxx index 619af90e355c..0f618f04bc54 100644 --- a/ucb/source/ucp/cmis/cmis_datasupplier.hxx +++ b/ucb/source/ucp/cmis/cmis_datasupplier.hxx @@ -39,7 +39,7 @@ namespace cmis ChildrenProvider* m_pChildrenProvider; sal_Int32 mnOpenMode; bool mbCountFinal; - bool getData(); + void getData(); ResultList maResults; public: diff --git a/ucb/source/ucp/ftp/ftpdirp.cxx b/ucb/source/ucp/ftp/ftpdirp.cxx index f4ab59afbbe8..ca439aa31a8a 100644 --- a/ucb/source/ucp/ftp/ftpdirp.cxx +++ b/ucb/source/ucp/ftp/ftpdirp.cxx @@ -1219,7 +1219,7 @@ bool FTPDirectoryParser::parseUNIX_isTime ( * checked for validity of the given day in the given month and year. * */ -bool FTPDirectoryParser::setYear ( +void FTPDirectoryParser::setYear ( DateTime &rDateTime, sal_uInt16 nYear) { if (nYear < 100) @@ -1249,7 +1249,6 @@ bool FTPDirectoryParser::setYear ( } rDateTime.SetYear(nYear); - return true; } /* diff --git a/ucb/source/ucp/ftp/ftpdirp.hxx b/ucb/source/ucp/ftp/ftpdirp.hxx index 3284c7357fb4..983fab1d29ae 100644 --- a/ucb/source/ucp/ftp/ftpdirp.hxx +++ b/ucb/source/ucp/ftp/ftpdirp.hxx @@ -143,7 +143,7 @@ namespace ftp { sal_uInt16 nHour, DateTime& rDateTime); - static bool setYear ( + static void setYear ( DateTime& rDateTime, sal_uInt16 nYear); diff --git a/ucb/source/ucp/webdav-neon/webdavcontent.cxx b/ucb/source/ucp/webdav-neon/webdavcontent.cxx index 3113b3c1f5f1..db25abd32205 100644 --- a/ucb/source/ucp/webdav-neon/webdavcontent.cxx +++ b/ucb/source/ucp/webdav-neon/webdavcontent.cxx @@ -1256,8 +1256,8 @@ uno::Reference< sdbc::XRow > Content::getPropertyValues( while ( it != end ) { - if ( pProvider->getProperty( (*it).first, aProp ) ) - xRow->appendObject( aProp, (*it).second.value() ); + pProvider->getProperty( (*it).first, aProp ); + xRow->appendObject( aProp, (*it).second.value() ); ++it; } diff --git a/ucb/source/ucp/webdav-neon/webdavcontentcaps.cxx b/ucb/source/ucp/webdav-neon/webdavcontentcaps.cxx index 5599b04ff65f..38b840bcbc15 100644 --- a/ucb/source/ucp/webdav-neon/webdavcontentcaps.cxx +++ b/ucb/source/ucp/webdav-neon/webdavcontentcaps.cxx @@ -62,7 +62,7 @@ using namespace webdav_ucp; // ContentProvider implementation. -bool ContentProvider::getProperty( +void ContentProvider::getProperty( const OUString & rPropName, beans::Property & rProp ) { if ( !m_pProps ) @@ -277,8 +277,6 @@ bool ContentProvider::getProperty( cppu::UnoType<OUString>::get(), beans::PropertyAttribute::BOUND ); } - - return true; } diff --git a/ucb/source/ucp/webdav-neon/webdavprovider.hxx b/ucb/source/ucp/webdav-neon/webdavprovider.hxx index e90d5364a742..06639ff3ba62 100644 --- a/ucb/source/ucp/webdav-neon/webdavprovider.hxx +++ b/ucb/source/ucp/webdav-neon/webdavprovider.hxx @@ -103,7 +103,7 @@ public: // Non-interface methods. - bool getProperty( const OUString & rPropName, + void getProperty( const OUString & rPropName, css::beans::Property & rProp ); }; commit f2fb91390c443248e9c70363ef3038b1e2265e45 Author: Noel Grandin <noel.gran...@collabora.co.uk> AuthorDate: Tue Jul 31 10:54:41 2018 +0200 Commit: Noel Grandin <noel.gran...@collabora.co.uk> CommitDate: Tue Jul 31 14:59:31 2018 +0200 loplugin:unnecessaryoverride small improvement when we have two definitions of the same method in a straight inheritance path up our hierarchy, we were missing a warning Change-Id: Ibc0f11644c7321a0d5618024860c2503665d8835 Reviewed-on: https://gerrit.libreoffice.org/58354 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk> diff --git a/compilerplugins/clang/test/unnecessaryoverride.cxx b/compilerplugins/clang/test/unnecessaryoverride.cxx index 7941263e2cec..a4db41aa5a99 100644 --- a/compilerplugins/clang/test/unnecessaryoverride.cxx +++ b/compilerplugins/clang/test/unnecessaryoverride.cxx @@ -148,4 +148,35 @@ public: void f1() { Base3::f1(); } }; +// check the case where the method occurs more than once in a direct path up the class hierarchy +struct Base4 +{ + void f1(); +}; +struct Derived4_1 : public Base4 +{ + void f1(); +}; +struct Derived4_2 : public Derived4_1 +{ + void + f1() // expected-error {{public function just calls public parent [loplugin:unnecessaryoverride]}} + { + Derived4_1::f1(); + } +}; + +struct Base5_1 +{ + void f1(); +}; +struct Base5_2 +{ + void f1(); +}; +struct Derived5 : public Base5_1, public Base5_2 +{ + void f1() { Base5_1::f1(); } // no warning expected +}; + /* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */ diff --git a/compilerplugins/clang/unnecessaryoverride.cxx b/compilerplugins/clang/unnecessaryoverride.cxx index 092decc797fc..a4cf1da809c0 100644 --- a/compilerplugins/clang/unnecessaryoverride.cxx +++ b/compilerplugins/clang/unnecessaryoverride.cxx @@ -389,7 +389,8 @@ const CXXMethodDecl* UnnecessaryOverride::findOverriddenOrSimilarMethodInSupercl return nullptr; } - std::vector<const CXXMethodDecl*> maSimilarMethods; + const CXXMethodDecl* similarMethod = nullptr; + CXXBasePath similarBasePath; auto BaseMatchesCallback = [&](const CXXBaseSpecifier *cxxBaseSpecifier, CXXBasePath& path) { @@ -438,18 +439,31 @@ const CXXMethodDecl* UnnecessaryOverride::findOverriddenOrSimilarMethodInSupercl } } if (bParamsMatch) - maSimilarMethods.push_back(baseMethod); + { + // if we have already found a method directly below us in the inheritance hierarchy, just ignore this one + auto Compare = [&](CXXBasePathElement const & lhs, CXXBasePathElement const & rhs) + { + return lhs.Class == rhs.Class; + }; + if (similarMethod + && similarBasePath.size() < path.size() + && std::equal(similarBasePath.begin(), similarBasePath.end(), + path.begin(), Compare)) + break; + if (similarMethod) + return true; // short circuit the process + similarMethod = baseMethod; + similarBasePath = path; + } } return false; }; CXXBasePaths aPaths; - methodDecl->getParent()->lookupInBases(BaseMatchesCallback, aPaths); + if (methodDecl->getParent()->lookupInBases(BaseMatchesCallback, aPaths)) + return nullptr; - if (maSimilarMethods.size() == 1) { - return maSimilarMethods[0]; - } - return nullptr; + return similarMethod; } diff --git a/include/svx/svdview.hxx b/include/svx/svdview.hxx index bab4ecd10d90..a4708917de00 100644 --- a/include/svx/svdview.hxx +++ b/include/svx/svdview.hxx @@ -194,8 +194,6 @@ public: /* new interface src537 */ void GetAttributes(SfxItemSet& rTargetSet, bool bOnlyHardAttr=false) const; - SfxStyleSheet* GetStyleSheet() const; - // incomplete implementation: // OutputDevice is necessary to determine HandleSize. // If NULL the first signed on Win is used. diff --git a/svx/source/svdraw/svdview.cxx b/svx/source/svdraw/svdview.cxx index 5022243ff455..91bccc57f5e2 100644 --- a/svx/source/svdraw/svdview.cxx +++ b/svx/source/svdraw/svdview.cxx @@ -253,11 +253,6 @@ void SdrView::GetAttributes(SfxItemSet& rTargetSet, bool bOnlyHardAttr) const SdrCreateView::GetAttributes(rTargetSet, bOnlyHardAttr); } -SfxStyleSheet* SdrView::GetStyleSheet() const -{ - return SdrCreateView::GetStyleSheet(); -} - SdrHitKind SdrView::PickAnything(const MouseEvent& rMEvt, SdrMouseEventKind nEventKind, SdrViewEvent& rVEvt) const { rVEvt.bMouseDown=nEventKind==SdrMouseEventKind::BUTTONDOWN; _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits