loplugin:unnecessaryoverride
Change-Id: I08c55a3023ec2e8990098eeb60e91cd18556e7ae Reviewed-on: https://gerrit.libreoffice.org/29656 Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk> Tested-by: Noel Grandin <noel.grandin@collabora.co.uk>
This commit is contained in:
parent
14a7ac2033
commit
62223f9a8a
@ -39,6 +39,19 @@ public:
|
||||
return;
|
||||
if (fn == SRCDIR "/forms/source/component/Time.cxx")
|
||||
return;
|
||||
if (fn == SRCDIR "/svx/source/dialog/hyperdlg.cxx")
|
||||
return;
|
||||
if (fn == SRCDIR "/svx/source/dialog/rubydialog.cxx")
|
||||
return;
|
||||
if (fn.startswith(SRCDIR "/canvas"))
|
||||
return;
|
||||
if (fn == SRCDIR "/sc/source/ui/view/spelldialog.cxx")
|
||||
return;
|
||||
if (fn == SRCDIR "/sd/source/ui/dlg/SpellDialogChildWindow.cxx")
|
||||
return;
|
||||
// HAVE_ODBC_ADMINISTRATION
|
||||
if (fn == SRCDIR "/dbaccess/source/ui/dlg/dsselect.cxx")
|
||||
return;
|
||||
|
||||
TraverseDecl(compiler.getASTContext().getTranslationUnitDecl());
|
||||
}
|
||||
@ -72,6 +85,10 @@ bool UnnecessaryOverride::VisitCXXMethodDecl(const CXXMethodDecl* methodDecl)
|
||||
// entertaining template magic
|
||||
if (aFileName == SRCDIR "/sc/source/ui/vba/vbaformatcondition.cxx")
|
||||
return true;
|
||||
// not sure what is going on here, but removing the override causes a crash
|
||||
if (methodDecl->getQualifiedNameAsString() == "SwXTextDocument::queryAdapter")
|
||||
return true;
|
||||
|
||||
|
||||
const CXXMethodDecl* overriddenMethodDecl = *methodDecl->begin_overridden_methods();
|
||||
|
||||
@ -80,62 +97,78 @@ bool UnnecessaryOverride::VisitCXXMethodDecl(const CXXMethodDecl* methodDecl)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
if (methodDecl->getAccess() == AS_public && overriddenMethodDecl->getAccess() == AS_protected)
|
||||
return true;
|
||||
|
||||
//TODO: check for identical exception specifications
|
||||
|
||||
const CompoundStmt* compoundStmt = dyn_cast<CompoundStmt>(methodDecl->getBody());
|
||||
if (!compoundStmt || compoundStmt->size() != 1)
|
||||
return true;
|
||||
auto returnStmt = dyn_cast<ReturnStmt>(*compoundStmt->body_begin());
|
||||
if (returnStmt == nullptr) {
|
||||
return true;
|
||||
}
|
||||
auto returnExpr = returnStmt->getRetValue();
|
||||
if (returnExpr == nullptr) {
|
||||
return true;
|
||||
}
|
||||
returnExpr = returnExpr->IgnoreImplicit();
|
||||
|
||||
// In something like
|
||||
//
|
||||
// Reference< XResultSet > SAL_CALL OPreparedStatement::executeQuery(
|
||||
// const rtl::OUString& sql)
|
||||
// throw(SQLException, RuntimeException, std::exception)
|
||||
// {
|
||||
// return OCommonStatement::executeQuery( sql );
|
||||
// }
|
||||
//
|
||||
// look down through all the
|
||||
//
|
||||
// ReturnStmt
|
||||
// `-ExprWithCleanups
|
||||
// `-CXXConstructExpr
|
||||
// `-MaterializeTemporaryExpr
|
||||
// `-ImplicitCastExpr
|
||||
// `-CXXBindTemporaryExpr
|
||||
// `-CXXMemberCallExpr
|
||||
//
|
||||
// where the fact that the overriding and overridden function have identical
|
||||
// return types makes us confident that all we need to check here is whether
|
||||
// there's an (arbitrary, one-argument) CXXConstructorExpr and
|
||||
// CXXBindTemporaryExpr in between:
|
||||
if (auto ctorExpr = dyn_cast<CXXConstructExpr>(returnExpr)) {
|
||||
if (ctorExpr->getNumArgs() == 1) {
|
||||
if (auto tempExpr = dyn_cast<CXXBindTemporaryExpr>(
|
||||
ctorExpr->getArg(0)->IgnoreImplicit()))
|
||||
{
|
||||
returnExpr = tempExpr->getSubExpr();
|
||||
const CXXMemberCallExpr* callExpr;
|
||||
if (compat::getReturnType(*methodDecl).getCanonicalType()->isVoidType())
|
||||
{
|
||||
callExpr = dyn_cast<CXXMemberCallExpr>(*compoundStmt->body_begin());
|
||||
}
|
||||
else
|
||||
{
|
||||
auto returnStmt = dyn_cast<ReturnStmt>(*compoundStmt->body_begin());
|
||||
if (returnStmt == nullptr) {
|
||||
return true;
|
||||
}
|
||||
auto returnExpr = returnStmt->getRetValue();
|
||||
if (returnExpr == nullptr) {
|
||||
return true;
|
||||
}
|
||||
returnExpr = returnExpr->IgnoreImplicit();
|
||||
|
||||
// In something like
|
||||
//
|
||||
// Reference< XResultSet > SAL_CALL OPreparedStatement::executeQuery(
|
||||
// const rtl::OUString& sql)
|
||||
// throw(SQLException, RuntimeException, std::exception)
|
||||
// {
|
||||
// return OCommonStatement::executeQuery( sql );
|
||||
// }
|
||||
//
|
||||
// look down through all the
|
||||
//
|
||||
// ReturnStmt
|
||||
// `-ExprWithCleanups
|
||||
// `-CXXConstructExpr
|
||||
// `-MaterializeTemporaryExpr
|
||||
// `-ImplicitCastExpr
|
||||
// `-CXXBindTemporaryExpr
|
||||
// `-CXXMemberCallExpr
|
||||
//
|
||||
// where the fact that the overriding and overridden function have identical
|
||||
// return types makes us confident that all we need to check here is whether
|
||||
// there's an (arbitrary, one-argument) CXXConstructorExpr and
|
||||
// CXXBindTemporaryExpr in between:
|
||||
if (auto ctorExpr = dyn_cast<CXXConstructExpr>(returnExpr)) {
|
||||
if (ctorExpr->getNumArgs() == 1) {
|
||||
auto tempExpr1 = ctorExpr->getArg(0)->IgnoreImplicit();
|
||||
if (auto tempExpr2 = dyn_cast<CXXBindTemporaryExpr>(tempExpr1))
|
||||
{
|
||||
returnExpr = tempExpr2->getSubExpr();
|
||||
}
|
||||
else if (auto tempExpr2 = dyn_cast<CXXMemberCallExpr>(tempExpr1))
|
||||
{
|
||||
returnExpr = tempExpr2;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
callExpr = dyn_cast<CXXMemberCallExpr>(returnExpr->IgnoreParenImpCasts());
|
||||
}
|
||||
|
||||
const CXXMemberCallExpr* callExpr = dyn_cast<CXXMemberCallExpr>(
|
||||
returnExpr->IgnoreParenImpCasts());
|
||||
if (!callExpr || callExpr->getMethodDecl() != overriddenMethodDecl)
|
||||
return true;
|
||||
const ImplicitCastExpr* expr1 = dyn_cast_or_null<ImplicitCastExpr>(callExpr->getImplicitObjectArgument());
|
||||
const Expr* expr1 = callExpr->getImplicitObjectArgument()->IgnoreImpCasts();
|
||||
if (!expr1)
|
||||
return true;
|
||||
const CXXThisExpr* expr2 = dyn_cast_or_null<CXXThisExpr>(expr1->getSubExpr());
|
||||
const CXXThisExpr* expr2 = dyn_cast_or_null<CXXThisExpr>(expr1);
|
||||
if (!expr2)
|
||||
return true;
|
||||
for (unsigned i = 0; i<callExpr->getNumArgs(); ++i) {
|
||||
@ -146,9 +179,10 @@ bool UnnecessaryOverride::VisitCXXMethodDecl(const CXXMethodDecl* methodDecl)
|
||||
}
|
||||
|
||||
report(
|
||||
DiagnosticsEngine::Warning, "%0 virtual function just calls %1 parent",
|
||||
methodDecl->getSourceRange().getBegin())
|
||||
<< methodDecl->getAccess() << overriddenMethodDecl->getAccess()
|
||||
DiagnosticsEngine::Warning, "%0 virtual function just calls %1 parent",
|
||||
methodDecl->getSourceRange().getBegin())
|
||||
<< methodDecl->getAccess()
|
||||
<< overriddenMethodDecl->getAccess()
|
||||
<< methodDecl->getSourceRange();
|
||||
if (methodDecl->getCanonicalDecl()->getLocation() != methodDecl->getLocation()) {
|
||||
const CXXMethodDecl* pOther = methodDecl->getCanonicalDecl();
|
||||
|
@ -61,11 +61,6 @@ OCatalog::~OCatalog()
|
||||
delete m_pUsers;
|
||||
}
|
||||
|
||||
void SAL_CALL OCatalog::acquire() throw()
|
||||
{
|
||||
OCatalog_BASE::acquire();
|
||||
}
|
||||
|
||||
void SAL_CALL OCatalog::release() throw()
|
||||
{
|
||||
release_ChildImpl();
|
||||
|
@ -183,11 +183,6 @@ namespace drawinglayer
|
||||
{
|
||||
}
|
||||
|
||||
bool SdrCubePrimitive3D::operator==(const BasePrimitive3D& rPrimitive) const
|
||||
{
|
||||
return SdrPrimitive3D::operator==(rPrimitive);
|
||||
}
|
||||
|
||||
basegfx::B3DRange SdrCubePrimitive3D::getB3DRange(const geometry::ViewInformation3D& /*rViewInformation*/) const
|
||||
{
|
||||
// use default from sdrPrimitive3D which uses transformation expanded by line width/2.
|
||||
|
@ -99,12 +99,6 @@ namespace accessibility
|
||||
}
|
||||
}
|
||||
|
||||
uno::Any SAL_CALL AccessibleImageBullet::queryInterface (const uno::Type & rType) throw (uno::RuntimeException, std::exception)
|
||||
{
|
||||
|
||||
return AccessibleImageBulletInterfaceBase::queryInterface(rType);
|
||||
}
|
||||
|
||||
uno::Reference< XAccessibleContext > SAL_CALL AccessibleImageBullet::getAccessibleContext( ) throw (uno::RuntimeException, std::exception)
|
||||
{
|
||||
|
||||
|
@ -31,8 +31,6 @@ typedef SvRefMemberList< SvMetaSlot* > SvSlotElementList;
|
||||
class SvMetaAttribute : public SvMetaReference
|
||||
{
|
||||
public:
|
||||
virtual void ReadAttributesSvIdl( SvIdlDataBase & rBase,
|
||||
SvTokenStream & rInStm ) override;
|
||||
tools::SvRef<SvMetaType> aType;
|
||||
SvIdentifier aSlotId;
|
||||
SvMetaAttribute();
|
||||
|
@ -97,12 +97,6 @@ bool SvMetaAttribute::ReadSvIdl( SvIdlDataBase & rBase,
|
||||
return bOk;
|
||||
}
|
||||
|
||||
void SvMetaAttribute::ReadAttributesSvIdl( SvIdlDataBase & rBase,
|
||||
SvTokenStream & rInStm )
|
||||
{
|
||||
SvMetaReference::ReadAttributesSvIdl( rBase, rInStm );
|
||||
}
|
||||
|
||||
sal_uLong SvMetaAttribute::MakeSfx( OStringBuffer& rAttrArray )
|
||||
{
|
||||
SvMetaType * pType = GetType();
|
||||
|
@ -105,7 +105,6 @@ namespace connectivity
|
||||
// ::cppu::OComponentHelper
|
||||
virtual void SAL_CALL disposing() override;
|
||||
// XInterface
|
||||
void SAL_CALL acquire() throw() override;
|
||||
void SAL_CALL release() throw() override;
|
||||
// XTablesSupplier
|
||||
virtual css::uno::Reference< css::container::XNameAccess > SAL_CALL getTables( ) throw(css::uno::RuntimeException, std::exception) override;
|
||||
|
@ -49,9 +49,6 @@ namespace drawinglayer
|
||||
const attribute::SdrLineFillShadowAttribute3D& rSdrLFSAttribute,
|
||||
const attribute::Sdr3DObjectAttribute& rSdr3DObjectAttribute);
|
||||
|
||||
/// compare operator
|
||||
virtual bool operator==(const BasePrimitive3D& rPrimitive) const override;
|
||||
|
||||
/// get range
|
||||
virtual basegfx::B3DRange getB3DRange(const geometry::ViewInformation3D& rViewInformation) const override;
|
||||
|
||||
|
@ -53,9 +53,6 @@ namespace accessibility
|
||||
|
||||
virtual ~AccessibleImageBullet () override;
|
||||
|
||||
// XInterface
|
||||
virtual css::uno::Any SAL_CALL queryInterface (const css::uno::Type & rType) throw (css::uno::RuntimeException, std::exception) override;
|
||||
|
||||
// XAccessible
|
||||
virtual css::uno::Reference< css::accessibility::XAccessibleContext > SAL_CALL getAccessibleContext( ) throw (css::uno::RuntimeException, std::exception) override;
|
||||
|
||||
|
@ -67,8 +67,6 @@ public:
|
||||
basegfx::B2DHomMatrix& aTransformation,
|
||||
::oox::drawingml::ShapeIdMap* pShapeMap = nullptr );
|
||||
|
||||
virtual void applyShapeReference( const oox::drawingml::Shape& rReferencedShape, bool bUseText = true ) override;
|
||||
|
||||
ShapeLocation getShapeLocation() const { return meShapeLocation; };
|
||||
void setReferenced( bool bReferenced ){ mbReferenced = bReferenced; };
|
||||
void setPlaceholder( oox::drawingml::ShapePtr pPlaceholder ) { mpPlaceholder = pPlaceholder; }
|
||||
|
@ -49,7 +49,6 @@ public:
|
||||
virtual ~ScreenshotTest() override;
|
||||
|
||||
virtual void setUp() override;
|
||||
virtual void tearDown() override;
|
||||
|
||||
/// Dialog creation for known dialogs by Name (path and UIXMLDescription, *.ui file).
|
||||
/// This uses maKnownDialogs to check if known, and if so, calls createDialogByID
|
||||
|
@ -378,7 +378,6 @@ public:
|
||||
virtual ~VCLXFrame() override;
|
||||
|
||||
// css::uno::XInterface
|
||||
css::uno::Any SAL_CALL queryInterface( const css::uno::Type & rType ) throw(css::uno::RuntimeException, std::exception) override;
|
||||
void SAL_CALL acquire() throw() override { OWeakObject::acquire(); }
|
||||
void SAL_CALL release() throw() override { OWeakObject::release(); }
|
||||
|
||||
@ -452,7 +451,6 @@ public:
|
||||
virtual ~VCLXTabPage() override;
|
||||
|
||||
// css::uno::XInterface
|
||||
css::uno::Any SAL_CALL queryInterface( const css::uno::Type & rType ) throw(css::uno::RuntimeException, std::exception) override;
|
||||
void SAL_CALL acquire() throw() override { OWeakObject::acquire(); }
|
||||
void SAL_CALL release() throw() override { OWeakObject::release(); }
|
||||
|
||||
|
@ -88,8 +88,6 @@ public:
|
||||
virtual css::uno::Reference< ov::msforms::XShapeRange > SAL_CALL Range( const css::uno::Any& shapes ) throw (css::uno::RuntimeException, std::exception) override;
|
||||
// ScVbaCollectionBaseImpl
|
||||
virtual css::uno::Any createCollectionObject( const css::uno::Any& aSource ) throw (css::uno::RuntimeException) override;
|
||||
virtual css::uno::Any SAL_CALL Item( const css::uno::Any& Index1, const css::uno::Any& Index2)
|
||||
throw (css::lang::IndexOutOfBoundsException, css::script::BasicErrorException, css::uno::RuntimeException) override;
|
||||
};
|
||||
|
||||
#endif // INCLUDED_VBAHELPER_VBASHAPES_HXX
|
||||
|
@ -174,7 +174,6 @@ public:
|
||||
const OUString& rLocalName,
|
||||
const css::uno::Reference< css::xml::sax::XAttributeList>& xAttrList ) override;
|
||||
virtual void CreateAndInsert(bool bOverwrite) override;
|
||||
virtual void Finish(bool bOverwrite) override;
|
||||
|
||||
SvXMLNumImpData* GetData() const { return pData; }
|
||||
sal_Int32 GetKey();
|
||||
|
@ -376,11 +376,6 @@ void PPTShape::addShape(
|
||||
}
|
||||
}
|
||||
|
||||
void PPTShape::applyShapeReference( const oox::drawingml::Shape& rReferencedShape, bool bUseText )
|
||||
{
|
||||
Shape::applyShapeReference( rReferencedShape, bUseText );
|
||||
}
|
||||
|
||||
namespace
|
||||
{
|
||||
bool ShapeLocationIsMaster(oox::drawingml::Shape *pInShape)
|
||||
|
@ -50,7 +50,6 @@ class ParserTest: public test::BootstrapFixture
|
||||
|
||||
public:
|
||||
virtual void setUp() override;
|
||||
virtual void tearDown() override;
|
||||
|
||||
void parse();
|
||||
|
||||
@ -70,11 +69,6 @@ void ParserTest::setUp()
|
||||
mxParser->setTokenHandler( mxTokenHandler.get() );
|
||||
}
|
||||
|
||||
void ParserTest::tearDown()
|
||||
{
|
||||
test::BootstrapFixture::tearDown();
|
||||
}
|
||||
|
||||
uno::Reference< io::XInputStream > ParserTest::createStream(const OString& sInput)
|
||||
{
|
||||
uno::Reference< io::XOutputStream > xPipe( io::Pipe::create(m_xContext) );
|
||||
|
@ -343,7 +343,6 @@ private:
|
||||
|
||||
public:
|
||||
virtual void setUp() override;
|
||||
virtual void tearDown() override;
|
||||
|
||||
XMLImportTest() : BootstrapFixture(true, false) {}
|
||||
void parse();
|
||||
@ -390,11 +389,6 @@ void XMLImportTest::setUp()
|
||||
m_sDirPath = m_directories.getPathFromSrc( "/sax/qa/data/" );
|
||||
}
|
||||
|
||||
void XMLImportTest::tearDown()
|
||||
{
|
||||
test::BootstrapFixture::tearDown();
|
||||
}
|
||||
|
||||
void XMLImportTest::parse()
|
||||
{
|
||||
OUString fileNames[] = {"simple.xml", "defaultns.xml", "inlinens.xml",
|
||||
|
@ -66,8 +66,6 @@ class Test : public test::BootstrapFixture, public XmlTestTools
|
||||
Primitive2DSequence parseSvg(const char* aSource);
|
||||
|
||||
public:
|
||||
virtual void tearDown() override;
|
||||
|
||||
CPPUNIT_TEST_SUITE(Test);
|
||||
CPPUNIT_TEST(testStyles);
|
||||
CPPUNIT_TEST(testTdf87309);
|
||||
@ -115,11 +113,6 @@ Primitive2DSequence Test::parseSvg(const char* aSource)
|
||||
return xSvgParser->getDecomposition(aInputStream, aPath);
|
||||
}
|
||||
|
||||
void Test::tearDown()
|
||||
{
|
||||
BootstrapFixture::tearDown();
|
||||
}
|
||||
|
||||
void Test::checkRectPrimitive(Primitive2DSequence& rPrimitive)
|
||||
{
|
||||
Primitive2dXmlDump dumper;
|
||||
|
@ -59,11 +59,6 @@ void ScreenshotTest::setUp()
|
||||
}
|
||||
}
|
||||
|
||||
void ScreenshotTest::tearDown()
|
||||
{
|
||||
test::BootstrapFixture::tearDown();
|
||||
}
|
||||
|
||||
void ScreenshotTest::implSaveScreenshot(const Bitmap& rScreenshot, const OString& rScreenshotId)
|
||||
{
|
||||
OUString aDirname, aBasename;
|
||||
|
@ -2727,12 +2727,6 @@ VCLXTabPage::~VCLXTabPage()
|
||||
{
|
||||
}
|
||||
|
||||
css::uno::Any SAL_CALL VCLXTabPage::queryInterface(const css::uno::Type & rType )
|
||||
throw(css::uno::RuntimeException, std::exception)
|
||||
{
|
||||
return VCLXContainer::queryInterface( rType );
|
||||
}
|
||||
|
||||
// css::lang::XTypeProvider
|
||||
IMPL_XTYPEPROVIDER_START( VCLXTabPage )
|
||||
VCLXContainer::getTypes()
|
||||
@ -6537,12 +6531,6 @@ VCLXFrame::~VCLXFrame()
|
||||
{
|
||||
}
|
||||
|
||||
css::uno::Any SAL_CALL VCLXFrame::queryInterface(const css::uno::Type & rType )
|
||||
throw(css::uno::RuntimeException, std::exception)
|
||||
{
|
||||
return VCLXContainer::queryInterface( rType );
|
||||
}
|
||||
|
||||
// css::lang::XTypeProvider
|
||||
IMPL_XTYPEPROVIDER_START( VCLXFrame )
|
||||
VCLXContainer::getTypes()
|
||||
|
@ -320,11 +320,6 @@ namespace cmis
|
||||
|
||||
XTYPEPROVIDER_COMMON_IMPL( RepoContent );
|
||||
|
||||
uno::Any SAL_CALL RepoContent::queryInterface( const uno::Type & rType ) throw ( uno::RuntimeException, std::exception )
|
||||
{
|
||||
return ContentImplHelper::queryInterface(rType);
|
||||
}
|
||||
|
||||
OUString SAL_CALL RepoContent::getImplementationName() throw( uno::RuntimeException, std::exception )
|
||||
{
|
||||
return OUString("com.sun.star.comp.CmisRepoContent");
|
||||
|
@ -89,8 +89,6 @@ public:
|
||||
virtual OUString getParentURL() override;
|
||||
|
||||
// XInterface
|
||||
virtual css::uno::Any SAL_CALL queryInterface( const css::uno::Type & rType )
|
||||
throw( css::uno::RuntimeException, std::exception ) override;
|
||||
|
||||
virtual css::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId()
|
||||
throw( css::uno::RuntimeException, std::exception ) override;
|
||||
|
@ -173,23 +173,6 @@ ScVbaShapes::getShapesByArrayIndices( const uno::Any& Index ) throw (uno::Runti
|
||||
return xIndexAccess;
|
||||
}
|
||||
|
||||
uno::Any SAL_CALL
|
||||
ScVbaShapes::Item(const uno::Any& Index, const uno::Any& Index2)
|
||||
throw (lang::IndexOutOfBoundsException, script::BasicErrorException, uno::RuntimeException)
|
||||
{
|
||||
// I don't think we need to support Array of indices for shapes
|
||||
/*
|
||||
if ( Index.getValueTypeClass() == uno::TypeClass_SEQUENCE )
|
||||
{
|
||||
uno::Reference< container::XIndexAccess > xIndexAccess( getShapesByArrayIndices( Index ) );
|
||||
// return new collection instance
|
||||
uno::Reference< XCollection > xShapesCollection( new ScVbaShapes( this->getParent(), mxContext, xIndexAccess ) );
|
||||
return uno::makeAny( xShapesCollection );
|
||||
}
|
||||
*/
|
||||
return ScVbaShapes_BASE::Item( Index, Index2 );
|
||||
}
|
||||
|
||||
uno::Reference< msforms::XShapeRange > SAL_CALL
|
||||
ScVbaShapes::Range( const uno::Any& shapes ) throw (css::uno::RuntimeException, std::exception)
|
||||
{
|
||||
|
@ -1829,11 +1829,6 @@ sal_Int32 SvXMLNumFormatContext::CreateAndInsert(SvNumberFormatter* pFormatter)
|
||||
return nKey;
|
||||
}
|
||||
|
||||
void SvXMLNumFormatContext::Finish( bool bOverwrite )
|
||||
{
|
||||
SvXMLStyleContext::Finish( bOverwrite );
|
||||
}
|
||||
|
||||
const LocaleDataWrapper& SvXMLNumFormatContext::GetLocaleData() const
|
||||
{
|
||||
return pData->GetLocaleData( nFormatLang );
|
||||
|
Loading…
x
Reference in New Issue
Block a user