[Libreoffice-commits] core.git: 22 commits - compilerplugins/clang dbaccess/source drawinglayer/source editeng/source embeddedobj/source eventattacher/source extensions/source forms/source framework/source i18nlangtag/qa io/source linguistic/source remotebridges/source reportdesign/source sax/qa sccomp/source scripting/source sc/source sdext/source sd/source sfx2/source slideshow/source solenv/CompilerTest_compilerplugins_clang.mk

Stephan Bergmann sbergman at redhat.com
Mon Dec 5 08:06:50 UTC 2016


 compilerplugins/clang/test/unnecessaryoverride-dtor.cxx          |  121 ++++++++++
 compilerplugins/clang/test/unnecessaryoverride-dtor.hxx          |   43 +++
 compilerplugins/clang/unnecessaryoverride.cxx                    |   84 ++++++
 dbaccess/source/core/dataaccess/dataaccessdescriptor.cxx         |    5 
 dbaccess/source/core/dataaccess/documentcontainer.cxx            |    3 
 dbaccess/source/filter/xml/dbloader2.cxx                         |    6 
 dbaccess/source/ui/browser/dbloader.cxx                          |    6 
 drawinglayer/source/drawinglayeruno/xprimitive2drenderer.cxx     |    5 
 editeng/source/items/svxfont.cxx                                 |    2 
 editeng/source/xml/xmltxtexp.cxx                                 |   12 
 editeng/source/xml/xmltxtimp.cxx                                 |   11 
 embeddedobj/source/msole/ownview.cxx                             |    6 
 eventattacher/source/eventattacher.cxx                           |    7 
 extensions/source/bibliography/framectr.cxx                      |    7 
 extensions/source/logging/csvformatter.cxx                       |    4 
 extensions/source/logging/plaintextformatter.cxx                 |    7 
 extensions/source/update/feed/updatefeed.cxx                     |    3 
 extensions/source/update/ui/updatecheckui.cxx                    |    7 
 forms/source/component/imgprod.cxx                               |    7 
 forms/source/helper/commandimageprovider.cxx                     |    3 
 framework/source/accelerators/globalacceleratorconfiguration.cxx |    3 
 framework/source/accelerators/moduleacceleratorconfiguration.cxx |    7 
 framework/source/services/ContextChangeEventMultiplexer.cxx      |    5 
 framework/source/services/modulemanager.cxx                      |    6 
 framework/source/services/substitutepathvars.cxx                 |    5 
 framework/source/services/taskcreatorsrv.cxx                     |    5 
 framework/source/services/urltransformer.cxx                     |    2 
 framework/source/uiconfiguration/globalsettings.cxx              |    5 
 framework/source/uiconfiguration/uicategorydescription.cxx       |    5 
 framework/source/uiconfiguration/uiconfigurationmanager.cxx      |    5 
 framework/source/uielement/controlmenucontroller.cxx             |    5 
 framework/source/uielement/objectmenucontroller.cxx              |    5 
 framework/source/uielement/popuptoolbarcontroller.cxx            |    6 
 framework/source/uielement/recentfilesmenucontroller.cxx         |    5 
 framework/source/uielement/resourcemenucontroller.cxx            |    5 
 framework/source/uielement/thesaurusmenucontroller.cxx           |    5 
 framework/source/uifactory/addonstoolbarfactory.cxx              |    5 
 framework/source/uifactory/uielementfactorymanager.cxx           |    3 
 framework/source/uifactory/windowcontentfactorymanager.cxx       |    3 
 i18nlangtag/qa/cppunit/test_languagetag.cxx                      |    1 
 io/source/acceptor/acc_pipe.cxx                                  |    5 
 io/source/acceptor/acc_socket.cxx                                |    5 
 io/source/connector/connector.cxx                                |    4 
 io/source/stm/odata.cxx                                          |   22 -
 linguistic/source/convdiclist.cxx                                |    5 
 remotebridges/source/unourl_resolver/unourl_resolver.cxx         |    3 
 reportdesign/source/filter/xml/xmlfilter.cxx                     |    6 
 sax/qa/cppunit/parser.cxx                                        |    1 
 sc/source/core/data/column.cxx                                   |    6 
 sc/source/core/data/dpgroup.cxx                                  |    3 
 sc/source/filter/excel/xedbdata.cxx                              |   10 
 sc/source/filter/excel/xelink.cxx                                |    5 
 sc/source/filter/excel/xetable.cxx                               |    2 
 sc/source/filter/oox/workbookfragment.cxx                        |    2 
 sc/source/filter/oox/worksheethelper.cxx                         |    1 
 sc/source/filter/orcus/filterdetect.cxx                          |    5 
 sc/source/filter/xml/XMLTrackedChangesContext.cxx                |   85 -------
 sc/source/filter/xml/xmlcvali.cxx                                |   24 -
 sc/source/filter/xml/xmlexprt.cxx                                |    5 
 sc/source/filter/xml/xmlimprt.cxx                                |   14 -
 sc/source/filter/xml/xmlstyli.cxx                                |    5 
 sc/source/ui/Accessibility/AccessibleDocumentPagePreview.cxx     |    5 
 sc/source/ui/Accessibility/AccessibleText.cxx                    |   40 ---
 sc/source/ui/vba/vbaeventshelper.cxx                             |    5 
 sc/source/ui/vba/vbahyperlinks.cxx                               |    5 
 sccomp/source/solver/CoinMPSolver.cxx                            |    1 
 sccomp/source/solver/LpsolveSolver.cxx                           |    1 
 scripting/source/provider/BrowseNodeFactoryImpl.cxx              |   12 
 sd/source/filter/grf/sdgrffilter.cxx                             |    6 
 sd/source/filter/html/HtmlOptionsDialog.cxx                      |    5 
 sd/source/ui/animations/CustomAnimationList.cxx                  |   18 -
 sd/source/ui/animations/motionpathtag.cxx                        |    6 
 sd/source/ui/annotations/annotationtag.cxx                       |    6 
 sd/source/ui/dlg/headerfooterdlg.cxx                             |    5 
 sd/source/ui/framework/factories/PresentationFactory.cxx         |    6 
 sd/source/ui/framework/tools/FrameworkHelper.cxx                 |   10 
 sd/source/ui/presenter/PresenterCanvas.cxx                       |    5 
 sd/source/ui/presenter/PresenterPreviewCache.cxx                 |    5 
 sd/source/ui/slidesorter/controller/SlsSelectionFunction.cxx     |    5 
 sd/source/ui/slidesorter/model/SlsPageEnumeration.cxx            |    5 
 sd/source/ui/slidesorter/shell/SlideSorter.cxx                   |    6 
 sd/source/ui/slidesorter/view/SlideSorterView.cxx                |    2 
 sd/source/ui/slidesorter/view/SlsLayeredDevice.cxx               |    4 
 sd/source/ui/tools/PreviewRenderer.cxx                           |    6 
 sd/source/ui/unoidl/UnoDocumentSettings.cxx                      |    5 
 sd/source/ui/unoidl/unomodel.cxx                                 |    5 
 sd/source/ui/unoidl/unopool.cxx                                  |    5 
 sd/source/ui/view/DocumentRenderer.cxx                           |    6 
 sd/source/ui/view/drviewsa.cxx                                   |    5 
 sd/source/ui/view/sdview.cxx                                     |    5 
 sd/source/ui/view/viewoverlaymanager.cxx                         |    5 
 sdext/source/pdfimport/pdfparse/pdfparse.cxx                     |    2 
 sdext/source/pdfimport/test/tests.cxx                            |    2 
 sdext/source/presenter/PresenterAccessibility.cxx                |   22 -
 sdext/source/presenter/PresenterProtocolHandler.cxx              |   13 -
 sdext/source/presenter/PresenterScreen.cxx                       |    5 
 sdext/source/presenter/PresenterToolBar.cxx                      |   10 
 sdext/source/presenter/PresenterViewFactory.cxx                  |    2 
 sfx2/source/appl/imestatuswindow.cxx                             |    4 
 sfx2/source/appl/sfxpicklist.cxx                                 |    1 
 sfx2/source/bastyp/fltlst.cxx                                    |    4 
 sfx2/source/dialog/backingcomp.cxx                               |    7 
 sfx2/source/dialog/infobar.cxx                                   |    2 
 sfx2/source/dialog/mailmodel.cxx                                 |    5 
 sfx2/source/dialog/templdlg.cxx                                  |    5 
 sfx2/source/doc/Metadatable.cxx                                  |   11 
 sfx2/source/doc/iframe.cxx                                       |    5 
 sfx2/source/doc/ownsubfilterservice.cxx                          |    6 
 sfx2/source/doc/sfxbasemodel.cxx                                 |    6 
 sfx2/source/notify/globalevents.cxx                              |    7 
 sfx2/source/sidebar/ControllerItem.cxx                           |    4 
 sfx2/source/toolbox/tbxitem.cxx                                  |    7 
 sfx2/source/view/classificationcontroller.cxx                    |    3 
 sfx2/source/view/classificationhelper.cxx                        |    3 
 sfx2/source/view/ipclient.cxx                                    |    6 
 sfx2/source/view/sfxbasecontroller.cxx                           |   16 -
 sfx2/source/view/viewprn.cxx                                     |    5 
 sfx2/source/view/viewsh.cxx                                      |    5 
 slideshow/source/engine/effectrewinder.cxx                       |    4 
 slideshow/source/engine/shapes/drawinglayeranimation.cxx         |    6 
 solenv/CompilerTest_compilerplugins_clang.mk                     |    1 
 121 files changed, 265 insertions(+), 777 deletions(-)

New commits:
commit 03c215ab07c3dc91fd1fd08a9f3ea627fbdea002
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Mon Dec 5 09:06:14 2016 +0100

    loplugin:unnecessaryoverride (dtors)
    
    Change-Id: Ia38672028668959bf3d5541fe4ddb9fb72848617

diff --git a/compilerplugins/clang/test/unnecessaryoverride-dtor.cxx b/compilerplugins/clang/test/unnecessaryoverride-dtor.cxx
new file mode 100644
index 0000000..26b3a81
--- /dev/null
+++ b/compilerplugins/clang/test/unnecessaryoverride-dtor.cxx
@@ -0,0 +1,121 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4; fill-column: 100 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#include <sal/config.h>
+
+#include <salhelper/simplereferenceobject.hxx>
+
+#include <unnecessaryoverride-dtor.hxx>
+
+struct NonVirtualBase {};
+
+struct NonVirtualDerived1: NonVirtualBase {
+    ~NonVirtualDerived1() {}
+};
+
+struct NonVirtualDerived2: NonVirtualBase {
+    virtual ~NonVirtualDerived2() {}
+};
+
+struct PrivateDerived: VirtualBase {
+private:
+    ~PrivateDerived() override {}
+};
+
+struct ProtectedDerived: VirtualBase {
+protected:
+    ~ProtectedDerived() override {}
+};
+
+IncludedDerived2::~IncludedDerived2() {}
+
+struct Incomplete: salhelper::SimpleReferenceObject {};
+
+IncludedDerived3::IncludedDerived3() {}
+
+IncludedDerived3::~IncludedDerived3() {}
+
+struct NoExSpecDerived: VirtualBase {
+    ~NoExSpecDerived() override {} // expected-error {{unnecessary user-declared destructor [loplugin:unnecessaryoverride]}}
+};
+
+struct NoThrowDerived: VirtualBase {
+    ~NoThrowDerived() throw () override {} // expected-error {{unnecessary user-declared destructor [loplugin:unnecessaryoverride]}}
+};
+
+struct NoexceptDerived: VirtualBase {
+    ~NoexceptDerived() noexcept override {} // expected-error {{unnecessary user-declared destructor [loplugin:unnecessaryoverride]}}
+};
+
+struct NoexceptTrueDerived: VirtualBase {
+    ~NoexceptTrueDerived() noexcept(true) override {} // expected-error {{unnecessary user-declared destructor [loplugin:unnecessaryoverride]}}
+};
+
+#if 0
+struct NoexceptFalseBase {
+    virtual ~NoexceptFalseBase() noexcept(false) {}
+};
+
+struct NoexceptFalseDerived: NoexceptFalseBase {
+    ~NoexceptFalseDerived() noexcept(false) override {}
+};
+#endif
+
+struct NoDtorDerived: VirtualBase {};
+
+struct DefaultDerived1: VirtualBase {
+    ~DefaultDerived1() override = default; // expected-error {{unnecessary user-declared destructor [loplugin:unnecessaryoverride]}}
+};
+
+struct DefaultDerived2: VirtualBase {
+    ~DefaultDerived2() override; // expected-note {{declared here [loplugin:unnecessaryoverride]}}
+};
+
+DefaultDerived2::~DefaultDerived2() = default; // expected-error {{unnecessary user-declared destructor [loplugin:unnecessaryoverride]}}
+
+struct EmptyDerived1: VirtualBase {
+    ~EmptyDerived1() override {}; // expected-error {{unnecessary user-declared destructor [loplugin:unnecessaryoverride]}}
+};
+
+struct EmptyDerived2: VirtualBase {
+    ~EmptyDerived2() override; // expected-note {{declared here [loplugin:unnecessaryoverride]}}
+};
+
+EmptyDerived2::~EmptyDerived2() {} // expected-error {{unnecessary user-declared destructor [loplugin:unnecessaryoverride]}}
+
+struct NonEmptyDerived: VirtualBase {
+    ~NonEmptyDerived() override { (void) 0; }
+};
+
+struct CatchDerived: VirtualBase {
+    ~CatchDerived() override try {} catch (...) {}
+};
+
+struct DeleteBase {
+    virtual ~DeleteBase() = delete;
+};
+
+struct DeleteDerived: DeleteBase {
+    ~DeleteDerived() override = delete;
+};
+
+struct PureBase {
+    virtual ~PureBase() = 0;
+};
+
+struct PureDerived: PureBase {
+    ~PureDerived() override {} // expected-error {{unnecessary user-declared destructor [loplugin:unnecessaryoverride]}}
+};
+
+// aovid loplugin:unreffun:
+int main() {
+    (void) NonVirtualDerived1();
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */
diff --git a/compilerplugins/clang/test/unnecessaryoverride-dtor.hxx b/compilerplugins/clang/test/unnecessaryoverride-dtor.hxx
new file mode 100644
index 0000000..fe1f9cb
--- /dev/null
+++ b/compilerplugins/clang/test/unnecessaryoverride-dtor.hxx
@@ -0,0 +1,43 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4; fill-column: 100 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#ifndef INCLUDED_COMPILERPLUGINS_CLANG_TEST_UNNECESSARYOVERRIDE_DTOR_HXX
+#define INCLUDED_COMPILERPLUGINS_CLANG_TEST_UNNECESSARYOVERRIDE_DTOR_HXX
+
+#include <sal/config.h>
+
+#include <rtl/ref.hxx>
+
+struct VirtualBase {
+    virtual ~VirtualBase() {}
+};
+
+struct IncludedDerived1: VirtualBase {
+    ~IncludedDerived1() override {};
+};
+
+struct IncludedDerived2: VirtualBase {
+    ~IncludedDerived2() override;
+};
+
+struct Incomplete;
+struct IncludedDerived3: VirtualBase {
+    IncludedDerived3();
+    ~IncludedDerived3() override;
+
+private:
+    IncludedDerived3(IncludedDerived3 &) = delete;
+    void operator =(IncludedDerived3) = delete;
+
+    rtl::Reference<Incomplete> m;
+};
+
+#endif
+
+/* 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 64239a6..98b77d5 100644
--- a/compilerplugins/clang/unnecessaryoverride.cxx
+++ b/compilerplugins/clang/unnecessaryoverride.cxx
@@ -71,10 +71,90 @@ private:
 
 bool UnnecessaryOverride::VisitCXXMethodDecl(const CXXMethodDecl* methodDecl)
 {
-    if (ignoreLocation(methodDecl->getCanonicalDecl()) || !methodDecl->doesThisDeclarationHaveABody()) {
+    if (ignoreLocation(methodDecl->getCanonicalDecl())) {
         return true;
     }
-    if (isa<CXXConstructorDecl>(methodDecl) || isa<CXXDestructorDecl>(methodDecl)) {
+    if (isa<CXXConstructorDecl>(methodDecl)) {
+        return true;
+    }
+
+    if (isa<CXXDestructorDecl>(methodDecl)) {
+        // Warn about unnecessarily user-declared overriding virtual
+        // destructors; such a destructor is deemed unnecessary if
+        // * it is public;
+        // * its class is only defined in the .cxx file (i.e., the virtual
+        //   destructor is neither used to controll the place of vtable
+        //   emission, nor is its definition depending on types that may still
+        //   be incomplete);
+        // * it either does not have an explicit exception specification, or has
+        //   a non-dependent explicit exception specification that is compatible
+        //   with a non-dependent exception specification the destructor would
+        //   have if it did not have an explicit one (TODO);
+        // * it is either defined as defaulted or with an empty body.
+        // Removing the user-declared destructor may cause the class to get an
+        // implicitly declared move constructor and/or move assignment operator;
+        // that is considered acceptable:  If any subobject cannot be moved, the
+        // implicitly declared function will be defined as deleted (which is in
+        // practice not much different from not having it declared), and
+        // otherwise offering movability is likely even an improvement over not
+        // offering it due to a "pointless" user-declared destructor.
+        // Similarly, removing the user-declared destructor may cause the
+        // implicit definition of a copy constructor and/or copy assignment
+        // operator to change from being an obsolete feature to being a standard
+        // feature.  That difference is not taken into account here.
+        if ((methodDecl->begin_overridden_methods()
+             == methodDecl->end_overridden_methods())
+            || methodDecl->getAccess() != AS_public)
+        {
+            return true;
+        }
+        if (!compiler.getSourceManager().isInMainFile(
+                methodDecl->getCanonicalDecl()->getLocation()))
+        {
+            return true;
+        }
+        if (!methodDecl->isExplicitlyDefaulted()) {
+            if (!methodDecl->doesThisDeclarationHaveABody()) {
+                return true;
+            }
+            auto stmt = dyn_cast<CompoundStmt>(methodDecl->getBody());
+            if (stmt == nullptr || stmt->size() != 0) {
+                return true;
+            }
+        }
+        //TODO: exception specification
+        auto cls = methodDecl->getParent();
+        if (!(cls->hasUserDeclaredCopyConstructor()
+              || cls->hasUserDeclaredCopyAssignment()
+              || cls->hasUserDeclaredMoveConstructor()
+              || cls->hasUserDeclaredMoveAssignment()))
+        {
+        }
+        if ((cls->needsImplicitMoveConstructor()
+             && !(cls->hasUserDeclaredCopyConstructor()
+                  || cls->hasUserDeclaredCopyAssignment()
+                  || cls->hasUserDeclaredMoveAssignment()))
+            || (cls->needsImplicitMoveAssignment()
+                && !(cls->hasUserDeclaredCopyConstructor()
+                     || cls->hasUserDeclaredCopyAssignment()
+                     || cls->hasUserDeclaredMoveConstructor())))
+        {
+            report(DiagnosticsEngine::Fatal, "TODO", methodDecl->getLocation());
+            return true;
+        }
+        report(
+            DiagnosticsEngine::Warning, "unnecessary user-declared destructor",
+            methodDecl->getLocation())
+            << methodDecl->getSourceRange();
+        auto cd = methodDecl->getCanonicalDecl();
+        if (cd->getLocation() != methodDecl->getLocation()) {
+            report(DiagnosticsEngine::Note, "declared here", cd->getLocation())
+                << cd->getSourceRange();
+        }
+        return true;
+    }
+
+    if (!methodDecl->doesThisDeclarationHaveABody()) {
         return true;
     }
 
diff --git a/solenv/CompilerTest_compilerplugins_clang.mk b/solenv/CompilerTest_compilerplugins_clang.mk
index dc3a67e..a4c0a15 100644
--- a/solenv/CompilerTest_compilerplugins_clang.mk
+++ b/solenv/CompilerTest_compilerplugins_clang.mk
@@ -17,6 +17,7 @@ $(eval $(call gb_CompilerTest_add_exception_objects,compilerplugins_clang, \
     compilerplugins/clang/test/oslendian-2 \
     compilerplugins/clang/test/oslendian-3 \
     compilerplugins/clang/test/salbool \
+    compilerplugins/clang/test/unnecessaryoverride-dtor \
     compilerplugins/clang/test/vclwidgets \
 ))
 
commit d12c8a0f2cedfb6a15742b51854492ec3829dc36
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Mon Dec 5 09:05:38 2016 +0100

    loplugin:unnecessaryoverride (dtors) in dbaccess
    
    Change-Id: I22cf2fec8e543582a32b9a4f00221f1b2d864f7a

diff --git a/dbaccess/source/core/dataaccess/dataaccessdescriptor.cxx b/dbaccess/source/core/dataaccess/dataaccessdescriptor.cxx
index 01330f5..f1eec5f 100644
--- a/dbaccess/source/core/dataaccess/dataaccessdescriptor.cxx
+++ b/dbaccess/source/core/dataaccess/dataaccessdescriptor.cxx
@@ -211,17 +211,12 @@ namespace
         virtual Reference< XPropertySet > SAL_CALL createDataAccessDescriptor(  ) throw (RuntimeException, std::exception) override;
 
         DataAccessDescriptorFactory();
-        virtual ~DataAccessDescriptorFactory() override;
     };
 
     DataAccessDescriptorFactory::DataAccessDescriptorFactory()
     {
     }
 
-    DataAccessDescriptorFactory::~DataAccessDescriptorFactory()
-    {
-    }
-
     OUString SAL_CALL DataAccessDescriptorFactory::getImplementationName() throw (RuntimeException, std::exception)
     {
         return OUString( "com.sun.star.comp.dba.DataAccessDescriptorFactory" );
diff --git a/dbaccess/source/core/dataaccess/documentcontainer.cxx b/dbaccess/source/core/dataaccess/documentcontainer.cxx
index 51bebd7..07f4d74 100644
--- a/dbaccess/source/core/dataaccess/documentcontainer.cxx
+++ b/dbaccess/source/core/dataaccess/documentcontainer.cxx
@@ -69,9 +69,6 @@ public:
         :m_aErrors( _rxContext )
     {
     }
-    virtual ~LocalNameApproval() override
-    {
-    }
 
     void SAL_CALL   approveElement( const OUString& _rName, const Reference< XInterface >& _rxElement ) override;
 };
diff --git a/dbaccess/source/filter/xml/dbloader2.cxx b/dbaccess/source/filter/xml/dbloader2.cxx
index 16a21a7..bade845 100644
--- a/dbaccess/source/filter/xml/dbloader2.cxx
+++ b/dbaccess/source/filter/xml/dbloader2.cxx
@@ -233,7 +233,6 @@ private:
     DECL_LINK( OnStartTableWizard, void*, void );
 public:
     explicit DBContentLoader(const Reference< XComponentContext >&);
-    virtual ~DBContentLoader() override;
 
     // XServiceInfo
     OUString                        SAL_CALL getImplementationName() throw(std::exception  ) override;
@@ -267,11 +266,6 @@ DBContentLoader::DBContentLoader(const Reference< XComponentContext >& _rxFactor
 
 }
 
-DBContentLoader::~DBContentLoader()
-{
-
-}
-
 Reference< XInterface > SAL_CALL DBContentLoader::Create( const Reference< XMultiServiceFactory >  & rSMgr )
 {
     return *(new DBContentLoader( comphelper::getComponentContext(rSMgr) ));
diff --git a/dbaccess/source/ui/browser/dbloader.cxx b/dbaccess/source/ui/browser/dbloader.cxx
index 04fa47e..bfe6a76 100644
--- a/dbaccess/source/ui/browser/dbloader.cxx
+++ b/dbaccess/source/ui/browser/dbloader.cxx
@@ -71,7 +71,6 @@ private:
     Reference< XComponentContext >      m_xContext;
 public:
     explicit DBContentLoader(const Reference< XComponentContext >&);
-    virtual ~DBContentLoader() override;
 
     // XServiceInfo
     OUString                 SAL_CALL getImplementationName() throw(std::exception  ) override;
@@ -101,11 +100,6 @@ DBContentLoader::DBContentLoader(const Reference< XComponentContext >& _rxContex
 
 }
 
-DBContentLoader::~DBContentLoader()
-{
-
-}
-
 extern "C" void SAL_CALL createRegistryInfo_DBContentLoader()
 {
     static ::dbaui::OMultiInstanceAutoRegistration< DBContentLoader > aAutoRegistration;
commit 7aeeb77c7b98a141be4935fcd33be016547ae619
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Mon Dec 5 09:05:21 2016 +0100

    loplugin:unnecessaryoverride (dtors) in drawinglayer
    
    Change-Id: Ib259cc2431b1703da40921c0f12679159d83ab0c

diff --git a/drawinglayer/source/drawinglayeruno/xprimitive2drenderer.cxx b/drawinglayer/source/drawinglayeruno/xprimitive2drenderer.cxx
index ef23f21..7cc3edb 100644
--- a/drawinglayer/source/drawinglayeruno/xprimitive2drenderer.cxx
+++ b/drawinglayer/source/drawinglayeruno/xprimitive2drenderer.cxx
@@ -52,7 +52,6 @@ namespace drawinglayer
         {
         public:
             XPrimitive2DRenderer();
-            virtual ~XPrimitive2DRenderer() override;
 
             XPrimitive2DRenderer(const XPrimitive2DRenderer&) = delete;
             const XPrimitive2DRenderer& operator=(const XPrimitive2DRenderer&) = delete;
@@ -107,10 +106,6 @@ namespace drawinglayer
         {
         }
 
-        XPrimitive2DRenderer::~XPrimitive2DRenderer()
-        {
-        }
-
         uno::Reference< rendering::XBitmap > XPrimitive2DRenderer::rasterize(
             const uno::Sequence< uno::Reference< graphic::XPrimitive2D > >& aPrimitive2DSequence,
             const uno::Sequence< beans::PropertyValue >& aViewInformationSequence,
commit b1dd9a631a560cf95fd00104517ccc86082e4fcd
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Mon Dec 5 09:04:59 2016 +0100

    loplugin:unnecessaryoverride (dtors) in editeng
    
    Change-Id: I7a268a1e991e84304e5435e0f7b633873f6829eb

diff --git a/editeng/source/items/svxfont.cxx b/editeng/source/items/svxfont.cxx
index 262a5c7..e52a4ee 100644
--- a/editeng/source/items/svxfont.cxx
+++ b/editeng/source/items/svxfont.cxx
@@ -588,8 +588,6 @@ public:
               nKern( _nKrn )
             { }
 
-    virtual ~SvxDoGetCapitalSize() override {}
-
     virtual void Do( const OUString &rTxt, const sal_Int32 nIdx,
                      const sal_Int32 nLen, const bool bUpper ) override;
 
diff --git a/editeng/source/xml/xmltxtexp.cxx b/editeng/source/xml/xmltxtexp.cxx
index cb4f208..9b4c6f3 100644
--- a/editeng/source/xml/xmltxtexp.cxx
+++ b/editeng/source/xml/xmltxtexp.cxx
@@ -130,8 +130,6 @@ class SvxSimpleUnoModel : public cppu::WeakAggImplHelper4<
 {
 public:
     SvxSimpleUnoModel();
-    virtual ~SvxSimpleUnoModel() override;
-
 
     // XMultiServiceFactory
     virtual css::uno::Reference< css::uno::XInterface > SAL_CALL createInstance( const OUString& aServiceSpecifier ) throw(css::uno::Exception, css::uno::RuntimeException, std::exception) override;
@@ -168,10 +166,6 @@ SvxSimpleUnoModel::SvxSimpleUnoModel()
 {
 }
 
-SvxSimpleUnoModel::~SvxSimpleUnoModel()
-{
-}
-
 // XMultiServiceFactory ( SvxFmMSFactory )
 uno::Reference< uno::XInterface > SAL_CALL SvxSimpleUnoModel::createInstance( const OUString& aServiceSpecifier )
     throw(uno::Exception, uno::RuntimeException, std::exception)
@@ -301,8 +295,6 @@ public:
         const OUString& rFileName,
         const css::uno::Reference< css::xml::sax::XDocumentHandler >& rHandler );
 
-    virtual ~SvxXMLTextExportComponent() override;
-
     // methods without content:
     virtual void ExportAutoStyles_() override;
     virtual void ExportMasterStyles_() override;
@@ -342,10 +334,6 @@ SvxXMLTextExportComponent::SvxXMLTextExportComponent(
     setExportFlags( SvXMLExportFlags::AUTOSTYLES|SvXMLExportFlags::CONTENT );
 }
 
-SvxXMLTextExportComponent::~SvxXMLTextExportComponent()
-{
-}
-
 void SvxWriteXML( EditEngine& rEditEngine, SvStream& rStream, const ESelection& rSel )
 {
     try
diff --git a/editeng/source/xml/xmltxtimp.cxx b/editeng/source/xml/xmltxtimp.cxx
index 8a09a57..23fc2be 100644
--- a/editeng/source/xml/xmltxtimp.cxx
+++ b/editeng/source/xml/xmltxtimp.cxx
@@ -56,7 +56,6 @@ class SvxXMLTextImportContext : public SvXMLImportContext
 {
 public:
     SvxXMLTextImportContext( SvXMLImport& rImport, sal_uInt16 nPrfx, const OUString& rLName, const uno::Reference< XAttributeList >& xAttrList, const uno::Reference< XText >& xText );
-    virtual ~SvxXMLTextImportContext() override;
 
     virtual SvXMLImportContext *CreateChildContext( sal_uInt16 nPrefix, const OUString& rLocalName, const uno::Reference< XAttributeList >& xAttrList ) override;
 
@@ -72,10 +71,6 @@ SvxXMLTextImportContext::SvxXMLTextImportContext( SvXMLImport& rImport, sal_uInt
 {
 }
 
-SvxXMLTextImportContext::~SvxXMLTextImportContext()
-{
-}
-
 SvXMLImportContext *SvxXMLTextImportContext::CreateChildContext( sal_uInt16 nPrefix, const OUString& rLocalName, const uno::Reference< XAttributeList >& xAttrList )
 {
     SvXMLImportContext* pContext = nullptr;
@@ -108,8 +103,6 @@ public:
         const css::uno::Reference< css::uno::XComponentContext >& rContext,
         const uno::Reference< XText > & rText );
 
-    virtual ~SvxXMLXTextImportComponent() throw () override;
-
 private:
     const uno::Reference< XText > mxText;
 };
@@ -124,10 +117,6 @@ SvxXMLXTextImportComponent::SvxXMLXTextImportComponent(
     GetTextImport()->SetCursor( mxText->createTextCursor() );
 }
 
-SvxXMLXTextImportComponent::~SvxXMLXTextImportComponent() throw ()
-{
-}
-
 void SvxReadXML( EditEngine& rEditEngine, SvStream& rStream, const ESelection& rSel )
 {
     SvxEditEngineSource aEditSource( &rEditEngine );
commit 0fef19f1211bd4caad757a2b6ee6693369e69db0
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Mon Dec 5 09:04:45 2016 +0100

    loplugin:unnecessaryoverride (dtors) in embeddedobj
    
    Change-Id: I5a65a8816438b7e777cabeb334a8cd7bcf4c814e

diff --git a/embeddedobj/source/msole/ownview.cxx b/embeddedobj/source/msole/ownview.cxx
index 352279d..5bd54df 100644
--- a/embeddedobj/source/msole/ownview.cxx
+++ b/embeddedobj/source/msole/ownview.cxx
@@ -53,18 +53,12 @@ class DummyHandler_Impl : public ::cppu::WeakImplHelper< task::XInteractionHandl
 {
 public:
     DummyHandler_Impl() {}
-    virtual ~DummyHandler_Impl() override;
 
     virtual void SAL_CALL handle( const uno::Reference< task::XInteractionRequest >& xRequest )
             throw( uno::RuntimeException, std::exception ) override;
 };
 
 
-DummyHandler_Impl::~DummyHandler_Impl()
-{
-}
-
-
 void SAL_CALL DummyHandler_Impl::handle( const uno::Reference< task::XInteractionRequest >& )
         throw( uno::RuntimeException, std::exception )
 {
commit 40c0438386abb5c1106a88ac1dd0c4ab6d16eae2
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Mon Dec 5 09:04:29 2016 +0100

    loplugin:unnecessaryoverride (dtors) in eventattacher
    
    Change-Id: I548d90cb5aec077b78965f34b9275ef6aef315b0

diff --git a/eventattacher/source/eventattacher.cxx b/eventattacher/source/eventattacher.cxx
index a5c4005..03f075b 100644
--- a/eventattacher/source/eventattacher.cxx
+++ b/eventattacher/source/eventattacher.cxx
@@ -209,7 +209,6 @@ class EventAttacherImpl : public WeakImplHelper < XEventAttacher2, XInitializati
 {
 public:
     explicit EventAttacherImpl( const Reference< XComponentContext >& );
-    virtual ~EventAttacherImpl() override;
 
     // XServiceInfo
     virtual OUString SAL_CALL getImplementationName(  ) throw(RuntimeException, std::exception) override;
@@ -283,12 +282,6 @@ EventAttacherImpl::EventAttacherImpl( const Reference< XComponentContext >& rxCo
 {
 }
 
-
-EventAttacherImpl::~EventAttacherImpl()
-{
-}
-
-
 Reference< XInterface > SAL_CALL EventAttacherImpl_CreateInstance( const Reference< XMultiServiceFactory >& rSMgr ) throw( Exception )
 {
     XEventAttacher *pEventAttacher = static_cast<XEventAttacher*>(new EventAttacherImpl( comphelper::getComponentContext(rSMgr) ));
commit 13ce97351d1751eb24cf0cd1ad35048329407f15
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Mon Dec 5 09:04:10 2016 +0100

    loplugin:unnecessaryoverride (dtors) in extensions
    
    Change-Id: Ia8250bc33c5d05861794619c5d240fdcb4002c13

diff --git a/extensions/source/bibliography/framectr.cxx b/extensions/source/bibliography/framectr.cxx
index c197982..4dbc7eb 100644
--- a/extensions/source/bibliography/framectr.cxx
+++ b/extensions/source/bibliography/framectr.cxx
@@ -144,17 +144,10 @@ public:
                                             , pController(nullptr)
                                         {}
 
-                                        virtual ~BibFrameCtrl_Impl() override;
-
     virtual void                        SAL_CALL frameAction(const FrameActionEvent& aEvent) throw( RuntimeException, std::exception ) override;
     virtual void                        SAL_CALL disposing( const lang::EventObject& Source ) throw (css::uno::RuntimeException, std::exception) override;
 };
 
-
-BibFrameCtrl_Impl::~BibFrameCtrl_Impl()
-{
-}
-
 void BibFrameCtrl_Impl::frameAction(const FrameActionEvent& ) throw( uno::RuntimeException, std::exception )
 {
 }
diff --git a/extensions/source/logging/csvformatter.cxx b/extensions/source/logging/csvformatter.cxx
index 3da67b3..f668c28 100644
--- a/extensions/source/logging/csvformatter.cxx
+++ b/extensions/source/logging/csvformatter.cxx
@@ -46,7 +46,6 @@ namespace logging
         virtual OUString SAL_CALL formatMultiColumn(const Sequence< OUString>& column_data) throw (RuntimeException, std::exception) override;
 
         CsvFormatter();
-        virtual ~CsvFormatter() override;
 
     private:
         // XCsvLogFormatter
@@ -137,9 +136,6 @@ namespace logging
         m_Columnnames({ "message" })
     { }
 
-    CsvFormatter::~CsvFormatter()
-    { }
-
     sal_Bool CsvFormatter::getLogEventNo() throw (RuntimeException, std::exception)
     {
         return m_LogEventNo;
diff --git a/extensions/source/logging/plaintextformatter.cxx b/extensions/source/logging/plaintextformatter.cxx
index c88a1f7..7e115dc 100644
--- a/extensions/source/logging/plaintextformatter.cxx
+++ b/extensions/source/logging/plaintextformatter.cxx
@@ -43,7 +43,6 @@ namespace logging
     {
     public:
         PlainTextFormatter();
-        virtual ~PlainTextFormatter() override;
 
     private:
         // XLogFormatter
@@ -61,12 +60,6 @@ namespace logging
     {
     }
 
-
-    PlainTextFormatter::~PlainTextFormatter()
-    {
-    }
-
-
     OUString SAL_CALL PlainTextFormatter::getHead(  ) throw (RuntimeException, std::exception)
     {
         OUStringBuffer aHeader;
diff --git a/extensions/source/update/feed/updatefeed.cxx b/extensions/source/update/feed/updatefeed.cxx
index d0e779b..0ab0e1c 100644
--- a/extensions/source/update/feed/updatefeed.cxx
+++ b/extensions/source/update/feed/updatefeed.cxx
@@ -233,8 +233,6 @@ public:
     {
     };
 
-    virtual ~UpdateInformationEnumeration() override {};
-
     // XEnumeration
     sal_Bool SAL_CALL hasMoreElements() throw (uno::RuntimeException, std::exception) override { return m_nCount < m_nNodes; };
     uno::Any SAL_CALL nextElement() throw (container::NoSuchElementException, lang::WrappedTargetException, uno::RuntimeException, std::exception) override
@@ -292,7 +290,6 @@ class SingleUpdateInformationEnumeration : public ::cppu::WeakImplHelper< contai
 public:
     explicit SingleUpdateInformationEnumeration(const uno::Reference< xml::dom::XElement >& xElement)
         : m_nCount(0) { m_aEntry.UpdateDocument = xElement; };
-    virtual ~SingleUpdateInformationEnumeration() override {};
 
     // XEnumeration
     sal_Bool SAL_CALL hasMoreElements() throw (uno::RuntimeException, std::exception) override { return 0 == m_nCount; };
diff --git a/extensions/source/update/ui/updatecheckui.cxx b/extensions/source/update/ui/updatecheckui.cxx
index 23810da..ab3b54c 100644
--- a/extensions/source/update/ui/updatecheckui.cxx
+++ b/extensions/source/update/ui/updatecheckui.cxx
@@ -103,7 +103,6 @@ private:
 public:
                     BubbleWindow( vcl::Window* pParent, const OUString& rTitle,
                                   const OUString& rText, const Image& rImage );
-                   virtual ~BubbleWindow() override;
 
     virtual void    MouseButtonDown( const MouseEvent& rMEvt ) override;
     virtual void    Paint(vcl::RenderContext& rRenderContext, const Rectangle& rRect) override;
@@ -753,12 +752,6 @@ BubbleWindow::BubbleWindow( vcl::Window* pParent, const OUString& rTitle,
     SetBackground( Wallpaper( GetSettings().GetStyleSettings().GetHelpColor() ) );
 }
 
-
-BubbleWindow::~BubbleWindow()
-{
-}
-
-
 void BubbleWindow::Resize()
 {
     SolarMutexGuard aGuard;
commit ccda3f37a4be4415e7349eed44cb9619da5cb153
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Mon Dec 5 09:03:49 2016 +0100

    loplugin:unnecessaryoverride (dtors) in forms
    
    Change-Id: Ia6787aa9dc7963b1e44604f22bfc95e0333a7f79

diff --git a/forms/source/component/imgprod.cxx b/forms/source/component/imgprod.cxx
index dab9b8f..945d45d 100644
--- a/forms/source/component/imgprod.cxx
+++ b/forms/source/component/imgprod.cxx
@@ -42,7 +42,6 @@ public:
 
     ImgProdLockBytes( SvStream* pStm, bool bOwner );
     explicit ImgProdLockBytes( css::uno::Reference< css::io::XInputStream > & rStreamRef );
-    virtual             ~ImgProdLockBytes() override;
 
     virtual ErrCode     ReadAt( sal_uInt64 nPos, void* pBuffer, std::size_t nCount, std::size_t * pRead ) const override;
     virtual ErrCode     WriteAt( sal_uInt64 nPos, const void* pBuffer, std::size_t nCount, std::size_t * pWritten ) override;
@@ -83,12 +82,6 @@ ImgProdLockBytes::ImgProdLockBytes( css::uno::Reference< css::io::XInputStream >
     }
 }
 
-
-ImgProdLockBytes::~ImgProdLockBytes()
-{
-}
-
-
 ErrCode ImgProdLockBytes::ReadAt(sal_uInt64 const nPos,
         void* pBuffer, std::size_t nCount, std::size_t * pRead) const
 {
diff --git a/forms/source/helper/commandimageprovider.cxx b/forms/source/helper/commandimageprovider.cxx
index 88e9bc6..e35ac39 100644
--- a/forms/source/helper/commandimageprovider.cxx
+++ b/forms/source/helper/commandimageprovider.cxx
@@ -59,9 +59,6 @@ namespace frm
         {
             impl_init_nothrow( _rContext, _rxDocument );
         }
-        virtual ~DocumentCommandImageProvider() override
-        {
-        }
 
         // ICommandImageProvider
         virtual CommandImages getCommandImages( const css::uno::Sequence< OUString >& _rCommandURLs, const bool _bLarge ) const override;
commit 3ef5bf5a0a31b12116da644178b3c7afcbf8076d
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Mon Dec 5 09:03:35 2016 +0100

    loplugin:unnecessaryoverride (dtors) in framework
    
    Change-Id: I52b12e390b97f15f9af07edd511fa36288f31fbd

diff --git a/framework/source/accelerators/globalacceleratorconfiguration.cxx b/framework/source/accelerators/globalacceleratorconfiguration.cxx
index 5104c24..257802a 100644
--- a/framework/source/accelerators/globalacceleratorconfiguration.cxx
+++ b/framework/source/accelerators/globalacceleratorconfiguration.cxx
@@ -54,9 +54,6 @@ public:
      */
     explicit GlobalAcceleratorConfiguration(const css::uno::Reference< css::uno::XComponentContext >& xContext);
 
-    /** TODO */
-    virtual ~GlobalAcceleratorConfiguration() override {}
-
     virtual OUString SAL_CALL getImplementationName()
         throw (css::uno::RuntimeException, std::exception) override
     {
diff --git a/framework/source/accelerators/moduleacceleratorconfiguration.cxx b/framework/source/accelerators/moduleacceleratorconfiguration.cxx
index 4e1fc33..9d56890 100644
--- a/framework/source/accelerators/moduleacceleratorconfiguration.cxx
+++ b/framework/source/accelerators/moduleacceleratorconfiguration.cxx
@@ -68,9 +68,6 @@ public:
             const css::uno::Reference< css::uno::XComponentContext >& xContext,
             const css::uno::Sequence< css::uno::Any >& lArguments);
 
-    /** TODO */
-    virtual ~ModuleAcceleratorConfiguration() override;
-
     virtual OUString SAL_CALL getImplementationName()
         throw (css::uno::RuntimeException, std::exception) override
     {
@@ -124,10 +121,6 @@ ModuleAcceleratorConfiguration::ModuleAcceleratorConfiguration(
                 static_cast< ::cppu::OWeakObject* >(this));
 }
 
-ModuleAcceleratorConfiguration::~ModuleAcceleratorConfiguration()
-{
-}
-
 void ModuleAcceleratorConfiguration::fillCache()
 {
     {
diff --git a/framework/source/services/ContextChangeEventMultiplexer.cxx b/framework/source/services/ContextChangeEventMultiplexer.cxx
index 1f66669..fd695d1 100644
--- a/framework/source/services/ContextChangeEventMultiplexer.cxx
+++ b/framework/source/services/ContextChangeEventMultiplexer.cxx
@@ -53,7 +53,6 @@ class ContextChangeEventMultiplexer
 {
 public:
     ContextChangeEventMultiplexer();
-    virtual ~ContextChangeEventMultiplexer() override;
     ContextChangeEventMultiplexer(const ContextChangeEventMultiplexer&) = delete;
     ContextChangeEventMultiplexer& operator=(const ContextChangeEventMultiplexer&) = delete;
 
@@ -121,10 +120,6 @@ ContextChangeEventMultiplexer::ContextChangeEventMultiplexer()
 {
 }
 
-ContextChangeEventMultiplexer::~ContextChangeEventMultiplexer()
-{
-}
-
 void SAL_CALL ContextChangeEventMultiplexer::disposing()
 {
     ListenerMap aListeners;
diff --git a/framework/source/services/modulemanager.cxx b/framework/source/services/modulemanager.cxx
index 5cb7b4b..53f8908 100644
--- a/framework/source/services/modulemanager.cxx
+++ b/framework/source/services/modulemanager.cxx
@@ -61,8 +61,6 @@ public:
 
     explicit ModuleManager(const css::uno::Reference< css::uno::XComponentContext >& xContext);
 
-    virtual ~ModuleManager() override;
-
     ModuleManager(const ModuleManager&) = delete;
     ModuleManager& operator=(const ModuleManager&) = delete;
 
@@ -151,10 +149,6 @@ ModuleManager::ModuleManager(const css::uno::Reference< css::uno::XComponentCont
             css::uno::UNO_QUERY_THROW );
 }
 
-ModuleManager::~ModuleManager()
-{
-}
-
 OUString ModuleManager::getImplementationName()
     throw (css::uno::RuntimeException, std::exception)
 {
diff --git a/framework/source/services/substitutepathvars.cxx b/framework/source/services/substitutepathvars.cxx
index 0bbc055..b946b37 100644
--- a/framework/source/services/substitutepathvars.cxx
+++ b/framework/source/services/substitutepathvars.cxx
@@ -136,7 +136,6 @@ class SubstitutePathVariables : private cppu::BaseMutex,
 {
 public:
     explicit SubstitutePathVariables(const css::uno::Reference< css::uno::XComponentContext >& xContext);
-    virtual ~SubstitutePathVariables() override;
 
     virtual OUString SAL_CALL getImplementationName()
         throw (css::uno::RuntimeException, std::exception) override
@@ -228,10 +227,6 @@ SubstitutePathVariables::SubstitutePathVariables( const Reference< XComponentCon
     m_aReSubstFixedVarOrder.sort();
 }
 
-SubstitutePathVariables::~SubstitutePathVariables()
-{
-}
-
 // XStringSubstitution
 OUString SAL_CALL SubstitutePathVariables::substituteVariables( const OUString& aText, sal_Bool bSubstRequired )
 throw ( NoSuchElementException, RuntimeException, std::exception )
diff --git a/framework/source/services/taskcreatorsrv.cxx b/framework/source/services/taskcreatorsrv.cxx
index 8757f8a..ca41f84 100644
--- a/framework/source/services/taskcreatorsrv.cxx
+++ b/framework/source/services/taskcreatorsrv.cxx
@@ -64,7 +64,6 @@ private:
 public:
 
     explicit TaskCreatorService(const css::uno::Reference< css::uno::XComponentContext >& xContext);
-    virtual ~TaskCreatorService(                                                                   ) override;
 
     virtual OUString SAL_CALL getImplementationName()
         throw (css::uno::RuntimeException, std::exception) override
@@ -119,10 +118,6 @@ TaskCreatorService::TaskCreatorService(const css::uno::Reference< css::uno::XCom
 {
 }
 
-TaskCreatorService::~TaskCreatorService()
-{
-}
-
 css::uno::Reference< css::uno::XInterface > SAL_CALL TaskCreatorService::createInstance()
     throw(css::uno::Exception       ,
           css::uno::RuntimeException, std::exception)
diff --git a/framework/source/services/urltransformer.cxx b/framework/source/services/urltransformer.cxx
index 581c14b..99c78e9 100644
--- a/framework/source/services/urltransformer.cxx
+++ b/framework/source/services/urltransformer.cxx
@@ -37,8 +37,6 @@ class URLTransformer : public ::cppu::WeakImplHelper< css::util::XURLTransformer
 public:
     URLTransformer() {}
 
-    virtual ~URLTransformer() override {}
-
     virtual OUString SAL_CALL getImplementationName()
         throw (css::uno::RuntimeException, std::exception) override
     {
diff --git a/framework/source/uiconfiguration/globalsettings.cxx b/framework/source/uiconfiguration/globalsettings.cxx
index 8701c83..214ff1f 100644
--- a/framework/source/uiconfiguration/globalsettings.cxx
+++ b/framework/source/uiconfiguration/globalsettings.cxx
@@ -50,7 +50,6 @@ class GlobalSettings_Access : public ::cppu::WeakImplHelper<
 {
     public:
         explicit GlobalSettings_Access( const css::uno::Reference< css::uno::XComponentContext >& rxContext );
-        virtual ~GlobalSettings_Access() override;
 
         // XComponent
         virtual void SAL_CALL dispose() throw (css::uno::RuntimeException, std::exception) override;
@@ -89,10 +88,6 @@ GlobalSettings_Access::GlobalSettings_Access( const css::uno::Reference< css::un
 {
 }
 
-GlobalSettings_Access::~GlobalSettings_Access()
-{
-}
-
 // XComponent
 void SAL_CALL GlobalSettings_Access::dispose()
 throw ( css::uno::RuntimeException, std::exception )
diff --git a/framework/source/uiconfiguration/uicategorydescription.cxx b/framework/source/uiconfiguration/uicategorydescription.cxx
index 7b6109a..4efa5a8 100644
--- a/framework/source/uiconfiguration/uicategorydescription.cxx
+++ b/framework/source/uiconfiguration/uicategorydescription.cxx
@@ -367,7 +367,6 @@ class UICategoryDescription :  public UICommandDescription
 {
 public:
     explicit UICategoryDescription( const css::uno::Reference< css::uno::XComponentContext >& rxContext );
-    virtual ~UICategoryDescription() override;
 
     virtual OUString SAL_CALL getImplementationName()
         throw (css::uno::RuntimeException, std::exception) override
@@ -407,10 +406,6 @@ UICategoryDescription::UICategoryDescription( const Reference< XComponentContext
     impl_fillElements("ooSetupFactoryCmdCategoryConfigRef");
 }
 
-UICategoryDescription::~UICategoryDescription()
-{
-}
-
 struct Instance {
     explicit Instance(
         css::uno::Reference<css::uno::XComponentContext> const & context):
diff --git a/framework/source/uiconfiguration/uiconfigurationmanager.cxx b/framework/source/uiconfiguration/uiconfigurationmanager.cxx
index b798e2e..fa0ee57 100644
--- a/framework/source/uiconfiguration/uiconfigurationmanager.cxx
+++ b/framework/source/uiconfiguration/uiconfigurationmanager.cxx
@@ -84,7 +84,6 @@ public:
     }
 
     explicit UIConfigurationManager( const css::uno::Reference< css::uno::XComponentContext > & rxContext );
-    virtual ~UIConfigurationManager() override;
 
     // XComponent
     virtual void SAL_CALL dispose() throw (css::uno::RuntimeException, std::exception) override;
@@ -693,10 +692,6 @@ UIConfigurationManager::UIConfigurationManager( const css::uno::Reference< css::
     m_aUIElements.resize( css::ui::UIElementType::COUNT );
 }
 
-UIConfigurationManager::~UIConfigurationManager()
-{
-}
-
 // XComponent
 void SAL_CALL UIConfigurationManager::dispose() throw (css::uno::RuntimeException, std::exception)
 {
diff --git a/framework/source/uielement/controlmenucontroller.cxx b/framework/source/uielement/controlmenucontroller.cxx
index c549248..e4947ed 100644
--- a/framework/source/uielement/controlmenucontroller.cxx
+++ b/framework/source/uielement/controlmenucontroller.cxx
@@ -179,7 +179,6 @@ class ControlMenuController :  public svt::PopupMenuControllerBase
 
 public:
     explicit ControlMenuController( const uno::Reference< uno::XComponentContext >& xContext );
-    virtual ~ControlMenuController() override;
 
     // XServiceInfo
     virtual OUString SAL_CALL getImplementationName()
@@ -246,10 +245,6 @@ ControlMenuController::ControlMenuController( const css::uno::Reference< css::un
 
 }
 
-ControlMenuController::~ControlMenuController()
-{
-}
-
 // private function
 void ControlMenuController::updateImagesPopupMenu( PopupMenu* pPopupMenu )
 {
diff --git a/framework/source/uielement/objectmenucontroller.cxx b/framework/source/uielement/objectmenucontroller.cxx
index d876ee0..6404416 100644
--- a/framework/source/uielement/objectmenucontroller.cxx
+++ b/framework/source/uielement/objectmenucontroller.cxx
@@ -57,7 +57,6 @@ class ObjectMenuController :  public svt::PopupMenuControllerBase
 
 public:
     explicit ObjectMenuController( const css::uno::Reference< css::uno::XComponentContext >& xContext );
-    virtual ~ObjectMenuController() override;
 
     // XServiceInfo
     virtual OUString SAL_CALL getImplementationName()
@@ -95,10 +94,6 @@ ObjectMenuController::ObjectMenuController( const css::uno::Reference< css::uno:
 {
 }
 
-ObjectMenuController::~ObjectMenuController()
-{
-}
-
 // private function
 void ObjectMenuController::fillPopupMenu( const Sequence< css::embed::VerbDescriptor >& rVerbCommandSeq, Reference< css::awt::XPopupMenu >& rPopupMenu )
 {
diff --git a/framework/source/uielement/popuptoolbarcontroller.cxx b/framework/source/uielement/popuptoolbarcontroller.cxx
index 55d180e..c4e627d 100644
--- a/framework/source/uielement/popuptoolbarcontroller.cxx
+++ b/framework/source/uielement/popuptoolbarcontroller.cxx
@@ -73,8 +73,6 @@ typedef cppu::ImplInheritanceHelper< svt::ToolboxController,
 class PopupMenuToolbarController : public ToolBarBase
 {
 public:
-    virtual ~PopupMenuToolbarController() override;
-
     // XComponent
     virtual void SAL_CALL dispose() throw ( css::uno::RuntimeException, std::exception ) override;
     // XInitialization
@@ -110,10 +108,6 @@ PopupMenuToolbarController::PopupMenuToolbarController(
 {
 }
 
-PopupMenuToolbarController::~PopupMenuToolbarController()
-{
-}
-
 void SAL_CALL PopupMenuToolbarController::dispose()
 throw ( css::uno::RuntimeException, std::exception )
 {
diff --git a/framework/source/uielement/recentfilesmenucontroller.cxx b/framework/source/uielement/recentfilesmenucontroller.cxx
index 0c7425b..5d57358 100644
--- a/framework/source/uielement/recentfilesmenucontroller.cxx
+++ b/framework/source/uielement/recentfilesmenucontroller.cxx
@@ -54,7 +54,6 @@ class RecentFilesMenuController :  public svt::PopupMenuControllerBase
 public:
     RecentFilesMenuController( const uno::Reference< uno::XComponentContext >& xContext,
                                const uno::Sequence< uno::Any >& args );
-    virtual ~RecentFilesMenuController() override;
 
     // XServiceInfo
     virtual OUString SAL_CALL getImplementationName()
@@ -119,10 +118,6 @@ RecentFilesMenuController::RecentFilesMenuController( const uno::Reference< uno:
     }
 }
 
-RecentFilesMenuController::~RecentFilesMenuController()
-{
-}
-
 // private function
 void RecentFilesMenuController::fillPopupMenu( Reference< css::awt::XPopupMenu >& rPopupMenu )
 {
diff --git a/framework/source/uielement/resourcemenucontroller.cxx b/framework/source/uielement/resourcemenucontroller.cxx
index 4230177..9633a7f 100644
--- a/framework/source/uielement/resourcemenucontroller.cxx
+++ b/framework/source/uielement/resourcemenucontroller.cxx
@@ -28,7 +28,6 @@ class ResourceMenuController : public cppu::ImplInheritanceHelper< svt::PopupMen
 public:
     ResourceMenuController( const css::uno::Reference< css::uno::XComponentContext >& rxContext,
                             const css::uno::Sequence< css::uno::Any >& rxArgs, bool bToolbarContainer );
-    virtual ~ResourceMenuController() override;
 
     // XPopupMenuController
     virtual void SAL_CALL updatePopupMenu() throw ( css::uno::RuntimeException, std::exception ) override;
@@ -108,10 +107,6 @@ ResourceMenuController::ResourceMenuController( const css::uno::Reference< css::
         m_bInitialized = true;
 }
 
-ResourceMenuController::~ResourceMenuController()
-{
-}
-
 void ResourceMenuController::updatePopupMenu()
     throw ( css::uno::RuntimeException, std::exception )
 {
diff --git a/framework/source/uielement/thesaurusmenucontroller.cxx b/framework/source/uielement/thesaurusmenucontroller.cxx
index 9d55af4..360fd2f 100644
--- a/framework/source/uielement/thesaurusmenucontroller.cxx
+++ b/framework/source/uielement/thesaurusmenucontroller.cxx
@@ -30,7 +30,6 @@ class ThesaurusMenuController : public svt::PopupMenuControllerBase
 {
 public:
     explicit ThesaurusMenuController( const css::uno::Reference< css::uno::XComponentContext >& rxContext );
-    virtual ~ThesaurusMenuController() override;
 
     // XStatusListener
     virtual void SAL_CALL statusChanged( const css::frame::FeatureStateEvent& rEvent ) throw ( css::uno::RuntimeException, std::exception ) override;
@@ -55,10 +54,6 @@ ThesaurusMenuController::ThesaurusMenuController( const css::uno::Reference< css
 {
 }
 
-ThesaurusMenuController::~ThesaurusMenuController()
-{
-}
-
 void ThesaurusMenuController::statusChanged( const css::frame::FeatureStateEvent& rEvent )
     throw ( css::uno::RuntimeException, std::exception )
 {
diff --git a/framework/source/uifactory/addonstoolbarfactory.cxx b/framework/source/uifactory/addonstoolbarfactory.cxx
index 6cb5214..c304859 100644
--- a/framework/source/uifactory/addonstoolbarfactory.cxx
+++ b/framework/source/uifactory/addonstoolbarfactory.cxx
@@ -55,7 +55,6 @@ class AddonsToolBarFactory :  public ::cppu::WeakImplHelper< css::lang::XService
 {
 public:
     explicit AddonsToolBarFactory( const css::uno::Reference< css::uno::XComponentContext >& xContext );
-    virtual ~AddonsToolBarFactory() override;
 
     virtual OUString SAL_CALL getImplementationName()
         throw (css::uno::RuntimeException, std::exception) override
@@ -93,10 +92,6 @@ AddonsToolBarFactory::AddonsToolBarFactory(
 {
 }
 
-AddonsToolBarFactory::~AddonsToolBarFactory()
-{
-}
-
 bool IsCorrectContext( const OUString& rModuleIdentifier, const OUString& aContextList )
 {
     if ( aContextList.isEmpty() )
diff --git a/framework/source/uifactory/uielementfactorymanager.cxx b/framework/source/uifactory/uielementfactorymanager.cxx
index f3ea311..747f1cf 100644
--- a/framework/source/uifactory/uielementfactorymanager.cxx
+++ b/framework/source/uifactory/uielementfactorymanager.cxx
@@ -352,7 +352,6 @@ class UIElementFactoryManager : private cppu::BaseMutex,
     virtual void SAL_CALL disposing() override;
 public:
     explicit UIElementFactoryManager( const css::uno::Reference< css::uno::XComponentContext >& rxContext );
-    virtual ~UIElementFactoryManager() override;
 
     virtual OUString SAL_CALL getImplementationName()
         throw (css::uno::RuntimeException, std::exception) override
@@ -397,8 +396,6 @@ UIElementFactoryManager::UIElementFactoryManager( const Reference< XComponentCon
             "/org.openoffice.Office.UI.Factories/Registered/UIElementFactories"))
 {}
 
-UIElementFactoryManager::~UIElementFactoryManager() {}
-
 void SAL_CALL UIElementFactoryManager::disposing()
 {
     m_pConfigAccess.clear();
diff --git a/framework/source/uifactory/windowcontentfactorymanager.cxx b/framework/source/uifactory/windowcontentfactorymanager.cxx
index ee61aba..e41ea0a 100644
--- a/framework/source/uifactory/windowcontentfactorymanager.cxx
+++ b/framework/source/uifactory/windowcontentfactorymanager.cxx
@@ -50,7 +50,6 @@ class WindowContentFactoryManager : private cppu::BaseMutex,
 {
 public:
     explicit WindowContentFactoryManager( const css::uno::Reference< css::uno::XComponentContext>& rxContext );
-    virtual ~WindowContentFactoryManager() override;
 
     virtual OUString SAL_CALL getImplementationName()
         throw (css::uno::RuntimeException, std::exception) override
@@ -92,8 +91,6 @@ WindowContentFactoryManager::WindowContentFactoryManager( const uno::Reference<
             "/org.openoffice.Office.UI.WindowContentFactories/Registered/ContentFactories"))
 {}
 
-WindowContentFactoryManager::~WindowContentFactoryManager() {}
-
 void SAL_CALL WindowContentFactoryManager::disposing()
 {
     m_pConfigAccess.clear();
commit be1d38ba24a1c5f328b924bd204a142ab9355d79
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Mon Dec 5 09:02:51 2016 +0100

    loplugin:unnecessaryoverride (dtors) in i18nlangtag
    
    Change-Id: Id7c37e6a1966b4e44184391d9207e390d9c8861d

diff --git a/i18nlangtag/qa/cppunit/test_languagetag.cxx b/i18nlangtag/qa/cppunit/test_languagetag.cxx
index c7a8001..8f08d04 100644
--- a/i18nlangtag/qa/cppunit/test_languagetag.cxx
+++ b/i18nlangtag/qa/cppunit/test_languagetag.cxx
@@ -33,7 +33,6 @@ class TestLanguageTag : public CppUnit::TestFixture
 {
 public:
     TestLanguageTag() {}
-    virtual ~TestLanguageTag() override {}
 
     void testAllTags();
     void testAllIsoLangEntries();
commit d3a1830539adabfcbefe7efde9757e2ac847b676
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Mon Dec 5 09:02:38 2016 +0100

    loplugin:unnecessaryoverride (dtors) in io
    
    Change-Id: I5c787d70fb3388e649e751d2b801765d567249c7

diff --git a/io/source/acceptor/acc_pipe.cxx b/io/source/acceptor/acc_pipe.cxx
index 0ebd658..1819ff5 100644
--- a/io/source/acceptor/acc_pipe.cxx
+++ b/io/source/acceptor/acc_pipe.cxx
@@ -43,7 +43,6 @@ namespace io_acceptor
     {
     public:
         explicit PipeConnection( const OUString &sConnectionDescription);
-        virtual ~PipeConnection() override;
 
         virtual sal_Int32 SAL_CALL read( Sequence< sal_Int8 >& aReadBytes, sal_Int32 nBytesToRead )
             throw(css::io::IOException,
@@ -77,10 +76,6 @@ namespace io_acceptor
                 reinterpret_cast< sal_IntPtr >(&m_pipe)) );
     }
 
-    PipeConnection::~PipeConnection()
-    {
-    }
-
     sal_Int32 PipeConnection::read( Sequence < sal_Int8 > & aReadBytes , sal_Int32 nBytesToRead )
         throw(css::io::IOException,
               css::uno::RuntimeException, std::exception)
diff --git a/io/source/acceptor/acc_socket.cxx b/io/source/acceptor/acc_socket.cxx
index 1c721ec..7576402 100644
--- a/io/source/acceptor/acc_socket.cxx
+++ b/io/source/acceptor/acc_socket.cxx
@@ -70,7 +70,6 @@ namespace io_acceptor {
     {
     public:
         explicit SocketConnection( const OUString & sConnectionDescription );
-        virtual ~SocketConnection() override;
 
         virtual sal_Int32 SAL_CALL read( css::uno::Sequence< sal_Int8 >& aReadBytes,
                                          sal_Int32 nBytesToRead )
@@ -170,10 +169,6 @@ namespace io_acceptor {
                 reinterpret_cast< sal_IntPtr >(&m_socket)) );
     }
 
-    SocketConnection::~SocketConnection()
-    {
-    }
-
     void SocketConnection::completeConnectionString()
     {
         OUStringBuffer buf( 256 );
diff --git a/io/source/connector/connector.cxx b/io/source/connector/connector.cxx
index aeeb035..6953267 100644
--- a/io/source/connector/connector.cxx
+++ b/io/source/connector/connector.cxx
@@ -53,7 +53,7 @@ namespace stoc_connector
         Reference< XComponentContext > _xCtx;
     public:
         explicit OConnector(const Reference< XComponentContext > &xCtx);
-        virtual ~OConnector() override;
+
         // Methods
         virtual Reference< XConnection > SAL_CALL connect(
             const OUString& sConnectionDescription )
@@ -70,8 +70,6 @@ namespace stoc_connector
         , _xCtx( xCtx )
     {}
 
-    OConnector::~OConnector() {}
-
     Reference< XConnection > SAL_CALL OConnector::connect( const OUString& sConnectionDescription )
         throw( NoConnectException, ConnectionSetupException, RuntimeException, std::exception)
     {
diff --git a/io/source/stm/odata.cxx b/io/source/stm/odata.cxx
index 0ba3e2b..64e1800 100644
--- a/io/source/stm/odata.cxx
+++ b/io/source/stm/odata.cxx
@@ -62,7 +62,6 @@ public:
         {
         }
 
-    virtual ~ODataInputStream() override;
 public: // XInputStream
     virtual sal_Int32 SAL_CALL readBytes(Sequence< sal_Int8 >& aData, sal_Int32 nBytesToRead)
                                                             throw ( NotConnectedException,
@@ -117,10 +116,6 @@ protected:
     bool m_bValidStream;
 };
 
-ODataInputStream::~ODataInputStream()
-{
-}
-
 // XInputStream
 sal_Int32 ODataInputStream::readBytes(Sequence< sal_Int8 >& aData, sal_Int32 nBytesToRead)
     throw ( NotConnectedException,
@@ -498,7 +493,6 @@ public:
         : m_bValidStream( false )
         {
         }
-    virtual ~ODataOutputStream() override;
 
 public: // XOutputStream
     virtual void SAL_CALL writeBytes(const Sequence< sal_Int8 >& aData)
@@ -552,11 +546,6 @@ protected:
     bool m_bValidStream;
 };
 
-ODataOutputStream::~ODataOutputStream()
-{
-}
-
-
 // XOutputStream
 void ODataOutputStream::writeBytes(const Sequence< sal_Int8 >& aData)
     throw ( NotConnectedException,
@@ -908,8 +897,6 @@ public:
         {
         }
 
-    virtual ~OObjectOutputStream() override;
-
 public:
     // XOutputStream
     virtual void SAL_CALL writeBytes(const Sequence< sal_Int8 >& aData)
@@ -976,10 +963,6 @@ private:
     bool                            m_bValidMarkable;
 };
 
-OObjectOutputStream::~OObjectOutputStream()
-{
-}
-
 void OObjectOutputStream::writeObject( const Reference< XPersistObject > & xPObj ) throw (css::io::IOException, css::uno::RuntimeException, std::exception)
 {
 
@@ -1171,7 +1154,6 @@ public:
         , m_bValidMarkable(false)
         {
         }
-    virtual ~OObjectInputStream() override;
 
 public: // XInputStream
     virtual sal_Int32 SAL_CALL readBytes(Sequence< sal_Int8 >& aData, sal_Int32 nBytesToRead)
@@ -1250,10 +1232,6 @@ private:
 
 };
 
-OObjectInputStream::~OObjectInputStream()
-{
-}
-
 Reference< XPersistObject >  OObjectInputStream::readObject() throw (css::io::IOException, css::uno::RuntimeException, std::exception)
 {
     // check if chain contains a XMarkableStream
commit 408e8fa80b86c4da2df66125723b2ca147e3ad1f
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Mon Dec 5 09:02:22 2016 +0100

    loplugin:unnecessaryoverride (dtors) in linguistic
    
    Change-Id: I046f4a29939e16d2576140774476a3daf3275bfa

diff --git a/linguistic/source/convdiclist.cxx b/linguistic/source/convdiclist.cxx
index d609c9b..9d0e6fe 100644
--- a/linguistic/source/convdiclist.cxx
+++ b/linguistic/source/convdiclist.cxx
@@ -84,7 +84,6 @@ class ConvDicNameContainer :
 
 public:
     ConvDicNameContainer();
-    virtual ~ConvDicNameContainer() override;
     ConvDicNameContainer(const ConvDicNameContainer&) = delete;
     ConvDicNameContainer& operator=(const ConvDicNameContainer&) = delete;
 
@@ -124,10 +123,6 @@ ConvDicNameContainer::ConvDicNameContainer()
 {
 }
 
-ConvDicNameContainer::~ConvDicNameContainer()
-{
-}
-
 void ConvDicNameContainer::FlushDics() const
 {
     sal_Int32 nLen = aConvDics.size();
commit d17d772eee3a6760f3100a7f0690f7b0440dffe6
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Mon Dec 5 09:02:06 2016 +0100

    loplugin:unnecessaryoverride (dtors) in remotebridges
    
    Change-Id: If9ea62b103f95a9f4abe692c6da2145f825a364f

diff --git a/remotebridges/source/unourl_resolver/unourl_resolver.cxx b/remotebridges/source/unourl_resolver/unourl_resolver.cxx
index 4b7db74..7327e08 100644
--- a/remotebridges/source/unourl_resolver/unourl_resolver.cxx
+++ b/remotebridges/source/unourl_resolver/unourl_resolver.cxx
@@ -65,7 +65,6 @@ class ResolverImpl : public WeakImplHelper< XServiceInfo, XUnoUrlResolver >
 
 public:
     explicit ResolverImpl( const Reference< XComponentContext > & xSMgr );
-    virtual ~ResolverImpl() override;
 
     // XServiceInfo
     virtual OUString SAL_CALL getImplementationName() throw(css::uno::RuntimeException, std::exception) override;
@@ -82,8 +81,6 @@ ResolverImpl::ResolverImpl( const Reference< XComponentContext > & xCtx )
     , _xCtx( xCtx )
 {}
 
-ResolverImpl::~ResolverImpl() {}
-
 // XServiceInfo
 OUString ResolverImpl::getImplementationName()
     throw(css::uno::RuntimeException, std::exception)
commit 8ed7c011dca7dce0f9da4250054b475431724e6d
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Mon Dec 5 09:01:53 2016 +0100

    loplugin:unnecessaryoverride (dtors) in reportdesign
    
    Change-Id: I9d28fbc78b24ec143d6ad3132137642309d02fa0

diff --git a/reportdesign/source/filter/xml/xmlfilter.cxx b/reportdesign/source/filter/xml/xmlfilter.cxx
index d1f933c..3756d9b 100644
--- a/reportdesign/source/filter/xml/xmlfilter.cxx
+++ b/reportdesign/source/filter/xml/xmlfilter.cxx
@@ -89,7 +89,7 @@ public:
             ORptFilter& rImport, sal_uInt16 nPrfx,
             const OUString& rLName ,
             const uno::Reference< xml::sax::XAttributeList > & xAttrList );
-    virtual ~RptMLMasterStylesContext_Impl() override;
+
     RptMLMasterStylesContext_Impl(const RptMLMasterStylesContext_Impl&) = delete;
     RptMLMasterStylesContext_Impl& operator=(const RptMLMasterStylesContext_Impl&) = delete;
     virtual void EndElement() override;
@@ -104,10 +104,6 @@ RptMLMasterStylesContext_Impl::RptMLMasterStylesContext_Impl(
 {
 }
 
-RptMLMasterStylesContext_Impl::~RptMLMasterStylesContext_Impl()
-{
-}
-
 void RptMLMasterStylesContext_Impl::EndElement()
 {
     FinishStyles( true );
commit ea1393758ef493d74fb6b1ae7e1c55cda34ba767
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Mon Dec 5 09:01:35 2016 +0100

    loplugin:unnecessaryoverride (dtors) in sax
    
    Change-Id: I88ef1fc5b154f29f13ddab00626bcfcd67385bd1

diff --git a/sax/qa/cppunit/parser.cxx b/sax/qa/cppunit/parser.cxx
index 03b2499..c77277b 100644
--- a/sax/qa/cppunit/parser.cxx
+++ b/sax/qa/cppunit/parser.cxx
@@ -27,7 +27,6 @@ class DummyTokenHandler : public cppu::WeakImplHelper< xml::sax::XFastTokenHandl
 {
 public:
              DummyTokenHandler() {}
-    virtual ~DummyTokenHandler() override {}
 
     virtual sal_Int32 SAL_CALL getTokenFromUTF8( const uno::Sequence<sal_Int8>& )
         throw (uno::RuntimeException, std::exception) override
commit 4d1257641e28f8df3d8def5e80280be5b1edbddb
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Mon Dec 5 09:01:19 2016 +0100

    loplugin:unnecessaryoverride (dtors) in sc
    
    Change-Id: Ifc44a22738cbd0ebbd81fae5caf1d9792e7746cf

diff --git a/sc/source/core/data/column.cxx b/sc/source/core/data/column.cxx
index 7ffafda..dd2d2e0 100644
--- a/sc/source/core/data/column.cxx
+++ b/sc/source/core/data/column.cxx
@@ -2309,8 +2309,6 @@ public:
     UpdateRefGroupBoundChecker(const sc::RefUpdateContext& rCxt, std::vector<SCROW>& rBounds) :
         mrCxt(rCxt), mrBounds(rBounds) {}
 
-    virtual ~UpdateRefGroupBoundChecker() override {}
-
     virtual void processSharedTop( ScFormulaCell** ppCells, size_t /*nRow*/, size_t /*nLength*/ ) override
     {
         // Check its tokens and record its reference boundaries.
@@ -2330,8 +2328,6 @@ public:
     UpdateRefExpandGroupBoundChecker(const sc::RefUpdateContext& rCxt, std::vector<SCROW>& rBounds) :
         mrCxt(rCxt), mrBounds(rBounds) {}
 
-    virtual ~UpdateRefExpandGroupBoundChecker() override {}
-
     virtual void processSharedTop( ScFormulaCell** ppCells, size_t /*nRow*/, size_t /*nLength*/ ) override
     {
         // Check its tokens and record its reference boundaries.
@@ -2349,8 +2345,6 @@ class FormulaGroupPicker : public SharedTopFormulaCellPicker
 public:
     explicit FormulaGroupPicker( std::vector<sc::FormulaGroupEntry>& rGroups ) : mrGroups(rGroups) {}
 
-    virtual ~FormulaGroupPicker() override {}
-
     virtual void processNonShared( ScFormulaCell* pCell, size_t nRow ) override
     {
         mrGroups.push_back(sc::FormulaGroupEntry(pCell, nRow));
diff --git a/sc/source/core/data/dpgroup.cxx b/sc/source/core/data/dpgroup.cxx
index cf3cfbf..c417218 100644
--- a/sc/source/core/data/dpgroup.cxx
+++ b/sc/source/core/data/dpgroup.cxx
@@ -52,7 +52,7 @@ class ScDPGroupNumFilter : public ScDPFilteredCache::FilterBase
 {
 public:
     ScDPGroupNumFilter(const std::vector<ScDPItemData>& rValues, const ScDPNumGroupInfo& rInfo);
-    virtual ~ScDPGroupNumFilter() override {}
+
     virtual bool match(const ScDPItemData &rCellData) const override;
     virtual std::vector<ScDPItemData> getMatchValues() const override;
 private:
@@ -108,7 +108,6 @@ std::vector<ScDPItemData> ScDPGroupNumFilter::getMatchValues() const
 class ScDPGroupDateFilter : public ScDPFilteredCache::FilterBase
 {
 public:
-    virtual ~ScDPGroupDateFilter() override {}
     ScDPGroupDateFilter(
         const std::vector<ScDPItemData>& rValues, const Date& rNullDate, const ScDPNumGroupInfo& rNumInfo);
 
diff --git a/sc/source/filter/excel/xedbdata.cxx b/sc/source/filter/excel/xedbdata.cxx
index 9ac746d..4c8e397 100644
--- a/sc/source/filter/excel/xedbdata.cxx
+++ b/sc/source/filter/excel/xedbdata.cxx
@@ -21,7 +21,6 @@ class XclExpTablesImpl5 : public XclExpTables
 {
 public:
     explicit            XclExpTablesImpl5( const XclExpRoot& rRoot );
-    virtual             ~XclExpTablesImpl5() override;
 
     virtual void        Save( XclExpStream& rStrm ) override;
     virtual void        SaveXml( XclExpXmlStream& rStrm ) override;
@@ -32,7 +31,6 @@ class XclExpTablesImpl8 : public XclExpTables
 {
 public:
     explicit            XclExpTablesImpl8( const XclExpRoot& rRoot );
-    virtual             ~XclExpTablesImpl8() override;
 
     virtual void        Save( XclExpStream& rStrm ) override;
     virtual void        SaveXml( XclExpXmlStream& rStrm ) override;
@@ -44,10 +42,6 @@ XclExpTablesImpl5::XclExpTablesImpl5( const XclExpRoot& rRoot ) :
 {
 }
 
-XclExpTablesImpl5::~XclExpTablesImpl5()
-{
-}
-
 void XclExpTablesImpl5::Save( XclExpStream& /*rStrm*/ )
 {
     // not implemented
@@ -64,10 +58,6 @@ XclExpTablesImpl8::XclExpTablesImpl8( const XclExpRoot& rRoot ) :
 {
 }
 
-XclExpTablesImpl8::~XclExpTablesImpl8()
-{
-}
-
 void XclExpTablesImpl8::Save( XclExpStream& /*rStrm*/ )
 {
     // not implemented
diff --git a/sc/source/filter/excel/xelink.cxx b/sc/source/filter/excel/xelink.cxx
index 2bfe779..dd8025a 100644
--- a/sc/source/filter/excel/xelink.cxx
+++ b/sc/source/filter/excel/xelink.cxx
@@ -51,7 +51,6 @@ public:
     /** @param nFlags  The flags to export. */
     explicit            XclExpExtNameBase( const XclExpRoot& rRoot,
                             const OUString& rName, sal_uInt16 nFlags = 0 );
-    virtual             ~XclExpExtNameBase() override;
 
     /** Returns the name string of the external name. */
     inline const OUString& GetName() const { return maName; }
@@ -906,10 +905,6 @@ XclExpExtNameBase::XclExpExtNameBase(
     SetRecSize( 6 + mxName->GetSize() );
 }
 
-XclExpExtNameBase::~XclExpExtNameBase()
-{
-}
-
 void XclExpExtNameBase::WriteBody( XclExpStream& rStrm )
 {
     rStrm   << mnFlags
diff --git a/sc/source/filter/excel/xetable.cxx b/sc/source/filter/excel/xetable.cxx
index fe39f238..d22eb46 100644
--- a/sc/source/filter/excel/xetable.cxx
+++ b/sc/source/filter/excel/xetable.cxx
@@ -2170,7 +2170,7 @@ public:
                  comphelper::ThreadTask( pTag ),
                  mbProgress( bProgress ),
                  mrColXFIndexes( rColXFIndexes ) {}
-    virtual ~RowFinalizeTask() override {}
+
     void     push_back( XclExpRow *pRow ) { maRows.push_back( pRow ); }
     virtual void doWork() override
     {
diff --git a/sc/source/filter/oox/workbookfragment.cxx b/sc/source/filter/oox/workbookfragment.cxx
index 53ae02f..cb6d298 100644
--- a/sc/source/filter/oox/workbookfragment.cxx
+++ b/sc/source/filter/oox/workbookfragment.cxx
@@ -270,7 +270,7 @@ class ProgressBarTimer : private Timer
             , mxWrapped(xRef)
         {
         }
-        virtual ~ProgressWrapper() override {}
+
         // IProgressBar
         virtual double getPosition() const override { return mfPosition; }
         virtual void   setPosition( double fPosition ) override { mfPosition = fPosition; }
diff --git a/sc/source/filter/oox/worksheethelper.cxx b/sc/source/filter/oox/worksheethelper.cxx
index 3583837..4fd1af0 100644
--- a/sc/source/filter/oox/worksheethelper.cxx
+++ b/sc/source/filter/oox/worksheethelper.cxx
@@ -207,7 +207,6 @@ public:
                             const ISegmentProgressBarRef& rxProgressBar,
                             WorksheetType eSheetType,
                             SCTAB nSheet );
-    virtual            ~WorksheetGlobals() override {}
 
     /** Returns true, if this helper refers to an existing Calc sheet. */
     inline bool         isValidSheet() const { return mxSheet.is(); }
diff --git a/sc/source/filter/orcus/filterdetect.cxx b/sc/source/filter/orcus/filterdetect.cxx
index a24b056..307ad59 100644
--- a/sc/source/filter/orcus/filterdetect.cxx
+++ b/sc/source/filter/orcus/filterdetect.cxx
@@ -27,7 +27,6 @@ class OrcusFormatDetect : public ::cppu::WeakImplHelper<
 {
 public:
     explicit            OrcusFormatDetect();
-    virtual             ~OrcusFormatDetect() override;
 
     virtual OUString SAL_CALL getImplementationName()
         throw( css::uno::RuntimeException, std::exception ) override;
@@ -49,10 +48,6 @@ OrcusFormatDetect::OrcusFormatDetect()
 {
 }
 
-OrcusFormatDetect::~OrcusFormatDetect()
-{
-}
-
 OUString OrcusFormatDetect::getImplementationName()
         throw( css::uno::RuntimeException, std::exception )
 {
diff --git a/sc/source/filter/xml/XMLTrackedChangesContext.cxx b/sc/source/filter/xml/XMLTrackedChangesContext.cxx
index e36f54f..4e6803d 100644
--- a/sc/source/filter/xml/XMLTrackedChangesContext.cxx
+++ b/sc/source/filter/xml/XMLTrackedChangesContext.cxx
@@ -51,7 +51,6 @@ public:
     ScXMLChangeInfoContext( ScXMLImport& rImport, sal_uInt16 nPrfx, const OUString& rLName,
                                       const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList,
                                       ScXMLChangeTrackingImportHelper* pChangeTrackingImportHelper);
-    virtual ~ScXMLChangeInfoContext() override;
 
     virtual SvXMLImportContext *CreateChildContext( sal_uInt16 nPrefix,
                                                     const OUString& rLocalName,
@@ -68,7 +67,6 @@ public:
     ScXMLBigRangeContext( ScXMLImport& rImport, sal_uInt16 nPrfx, const OUString& rLName,
                                       const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList,
                                       ScBigRange& rBigRange);
-    virtual ~ScXMLBigRangeContext() override;
 
     virtual SvXMLImportContext *CreateChildContext( sal_uInt16 nPrefix,
                                                     const OUString& rLocalName,
@@ -100,7 +98,6 @@ public:
     ScXMLCellContentDeletionContext( ScXMLImport& rImport, sal_uInt16 nPrfx, const OUString& rLName,
                                       const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList,
                                       ScXMLChangeTrackingImportHelper* pChangeTrackingImportHelper);
-    virtual ~ScXMLCellContentDeletionContext() override;
 
     virtual SvXMLImportContext *CreateChildContext( sal_uInt16 nPrefix,
                                                     const OUString& rLocalName,
@@ -117,7 +114,6 @@ public:
     ScXMLDependenceContext( ScXMLImport& rImport, sal_uInt16 nPrfx, const OUString& rLName,
                                       const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList,
                                       ScXMLChangeTrackingImportHelper* pChangeTrackingImportHelper);
-    virtual ~ScXMLDependenceContext() override;
 
     virtual SvXMLImportContext *CreateChildContext( sal_uInt16 nPrefix,
                                                     const OUString& rLocalName,
@@ -134,7 +130,6 @@ public:
     ScXMLDependingsContext( ScXMLImport& rImport, sal_uInt16 nPrfx, const OUString& rLName,
                                       const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList,
                                       ScXMLChangeTrackingImportHelper* pChangeTrackingImportHelper);
-    virtual ~ScXMLDependingsContext() override;
 
     virtual SvXMLImportContext *CreateChildContext( sal_uInt16 nPrefix,
                                                     const OUString& rLocalName,
@@ -151,7 +146,6 @@ public:
     ScXMLChangeDeletionContext( ScXMLImport& rImport, sal_uInt16 nPrfx, const OUString& rLName,
                                       const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList,
                                       ScXMLChangeTrackingImportHelper* pChangeTrackingImportHelper);
-    virtual ~ScXMLChangeDeletionContext() override;
 
     virtual SvXMLImportContext *CreateChildContext( sal_uInt16 nPrefix,
                                                     const OUString& rLocalName,
@@ -168,7 +162,6 @@ public:
     ScXMLDeletionsContext( ScXMLImport& rImport, sal_uInt16 nPrfx, const OUString& rLName,
                                       const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList,
                                       ScXMLChangeTrackingImportHelper* pChangeTrackingImportHelper);
-    virtual ~ScXMLDeletionsContext() override;
 
     virtual SvXMLImportContext *CreateChildContext( sal_uInt16 nPrefix,
                                                     const OUString& rLocalName,
@@ -229,7 +222,6 @@ public:
                                       formula::FormulaGrammar::Grammar& rGrammar,
                                       OUString& rInputString, double& fValue, sal_uInt16& nType,
                                       sal_uInt8& nMatrixFlag, sal_Int32& nMatrixCols, sal_Int32& nMatrixRows);
-    virtual ~ScXMLChangeCellContext() override;
 
     virtual SvXMLImportContext *CreateChildContext( sal_uInt16 nPrefix,
                                                     const OUString& rLocalName,
@@ -262,7 +254,6 @@ public:
     ScXMLPreviousContext( ScXMLImport& rImport, sal_uInt16 nPrfx, const OUString& rLName,
                                       const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList,
                                       ScXMLChangeTrackingImportHelper* pChangeTrackingImportHelper);
-    virtual ~ScXMLPreviousContext() override;
 
     virtual SvXMLImportContext *CreateChildContext( sal_uInt16 nPrefix,
                                                     const OUString& rLocalName,
@@ -280,7 +271,6 @@ public:
     ScXMLContentChangeContext( ScXMLImport& rImport, sal_uInt16 nPrfx, const OUString& rLName,
                                       const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList,
                                       ScXMLChangeTrackingImportHelper* pChangeTrackingImportHelper);
-    virtual ~ScXMLContentChangeContext() override;
 
     virtual SvXMLImportContext *CreateChildContext( sal_uInt16 nPrefix,
                                                     const OUString& rLocalName,
@@ -296,7 +286,6 @@ public:
     ScXMLInsertionContext( ScXMLImport& rImport, sal_uInt16 nPrfx, const OUString& rLName,
                                       const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList,
                                       ScXMLChangeTrackingImportHelper* pChangeTrackingImportHelper);
-    virtual ~ScXMLInsertionContext() override;
 
     virtual SvXMLImportContext *CreateChildContext( sal_uInt16 nPrefix,
                                                     const OUString& rLocalName,
@@ -312,7 +301,6 @@ public:
     ScXMLInsertionCutOffContext( ScXMLImport& rImport, sal_uInt16 nPrfx, const OUString& rLName,
                                       const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList,
                                       ScXMLChangeTrackingImportHelper* pChangeTrackingImportHelper);
-    virtual ~ScXMLInsertionCutOffContext() override;
 
     virtual SvXMLImportContext *CreateChildContext( sal_uInt16 nPrefix,
                                                     const OUString& rLocalName,
@@ -328,7 +316,6 @@ public:
     ScXMLMovementCutOffContext( ScXMLImport& rImport, sal_uInt16 nPrfx, const OUString& rLName,
                                       const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList,
                                       ScXMLChangeTrackingImportHelper* pChangeTrackingImportHelper);
-    virtual ~ScXMLMovementCutOffContext() override;
 
     virtual SvXMLImportContext *CreateChildContext( sal_uInt16 nPrefix,
                                                     const OUString& rLocalName,
@@ -344,7 +331,6 @@ public:
     ScXMLCutOffsContext( ScXMLImport& rImport, sal_uInt16 nPrfx, const OUString& rLName,
                                       const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList,
                                       ScXMLChangeTrackingImportHelper* pChangeTrackingImportHelper);
-    virtual ~ScXMLCutOffsContext() override;
 
     virtual SvXMLImportContext *CreateChildContext( sal_uInt16 nPrefix,
                                                     const OUString& rLocalName,
@@ -360,7 +346,6 @@ public:
     ScXMLDeletionContext( ScXMLImport& rImport, sal_uInt16 nPrfx, const OUString& rLName,
                                       const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList,
                                       ScXMLChangeTrackingImportHelper* pChangeTrackingImportHelper);
-    virtual ~ScXMLDeletionContext() override;
 
     virtual SvXMLImportContext *CreateChildContext( sal_uInt16 nPrefix,
                                                     const OUString& rLocalName,
@@ -378,7 +363,6 @@ public:
     ScXMLMovementContext( ScXMLImport& rImport, sal_uInt16 nPrfx, const OUString& rLName,
                                       const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList,
                                       ScXMLChangeTrackingImportHelper* pChangeTrackingImportHelper);
-    virtual ~ScXMLMovementContext() override;
 
     virtual SvXMLImportContext *CreateChildContext( sal_uInt16 nPrefix,
                                                     const OUString& rLocalName,
@@ -394,7 +378,6 @@ public:
     ScXMLRejectionContext( ScXMLImport& rImport, sal_uInt16 nPrfx, const OUString& rLName,
                                       const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList,
                                       ScXMLChangeTrackingImportHelper* pChangeTrackingImportHelper);
-    virtual ~ScXMLRejectionContext() override;
 
     virtual SvXMLImportContext *CreateChildContext( sal_uInt16 nPrefix,
                                                     const OUString& rLocalName,
@@ -514,10 +497,6 @@ ScXMLChangeInfoContext::ScXMLChangeInfoContext(  ScXMLImport& rImport,
     }
 }
 
-ScXMLChangeInfoContext::~ScXMLChangeInfoContext()
-{
-}
-
 SvXMLImportContext *ScXMLChangeInfoContext::CreateChildContext( sal_uInt16 nPrefix,
                                      const OUString& rLocalName,
                                      const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList )
@@ -626,10 +605,6 @@ ScXMLBigRangeContext::ScXMLBigRangeContext(  ScXMLImport& rImport,
         nEndColumn, nEndRow, nEndTable);
 }
 
-ScXMLBigRangeContext::~ScXMLBigRangeContext()
-{
-}
-
 SvXMLImportContext *ScXMLBigRangeContext::CreateChildContext( sal_uInt16 nPrefix,
                                      const OUString& rLocalName,
                                      const css::uno::Reference<css::xml::sax::XAttributeList>& /* xAttrList */ )
@@ -675,10 +650,6 @@ ScXMLCellContentDeletionContext::ScXMLCellContentDeletionContext(  ScXMLImport&
     }
 }
 
-ScXMLCellContentDeletionContext::~ScXMLCellContentDeletionContext()
-{
-}
-
 SvXMLImportContext *ScXMLCellContentDeletionContext::CreateChildContext( sal_uInt16 nPrefix,
                                      const OUString& rLocalName,
                                      const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList )
@@ -744,10 +715,6 @@ ScXMLDependenceContext::ScXMLDependenceContext(  ScXMLImport& rImport,
     pChangeTrackingImportHelper->AddDependence(nID);
 }
 
-ScXMLDependenceContext::~ScXMLDependenceContext()
-{
-}
-
 SvXMLImportContext *ScXMLDependenceContext::CreateChildContext( sal_uInt16 nPrefix,
                                      const OUString& rLocalName,
                                      const css::uno::Reference<css::xml::sax::XAttributeList>& /* xAttrList */ )
@@ -770,10 +737,6 @@ ScXMLDependingsContext::ScXMLDependingsContext(  ScXMLImport& rImport,
     // here are no attributes
 }
 
-ScXMLDependingsContext::~ScXMLDependingsContext()
-{
-}
-
 SvXMLImportContext *ScXMLDependingsContext::CreateChildContext( sal_uInt16 nPrefix,
                                      const OUString& rLocalName,
                                      const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList )
@@ -824,10 +787,6 @@ ScXMLChangeDeletionContext::ScXMLChangeDeletionContext(  ScXMLImport& rImport,
     pChangeTrackingImportHelper->AddDeleted(nID);
 }
 
-ScXMLChangeDeletionContext::~ScXMLChangeDeletionContext()
-{
-}
-
 SvXMLImportContext *ScXMLChangeDeletionContext::CreateChildContext( sal_uInt16 nPrefix,
                                      const OUString& rLocalName,
                                      const css::uno::Reference<css::xml::sax::XAttributeList>& /* xAttrList */ )
@@ -850,10 +809,6 @@ ScXMLDeletionsContext::ScXMLDeletionsContext(  ScXMLImport& rImport,
     // here are no attributes
 }
 
-ScXMLDeletionsContext::~ScXMLDeletionsContext()
-{
-}
-
 SvXMLImportContext *ScXMLDeletionsContext::CreateChildContext( sal_uInt16 nPrefix,
                                      const OUString& rLocalName,
                                      const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList )
@@ -1065,10 +1020,6 @@ ScXMLChangeCellContext::ScXMLChangeCellContext( ScXMLImport& rImport,
         nMatrixFlag = MM_FORMULA;
 }
 
-ScXMLChangeCellContext::~ScXMLChangeCellContext()
-{
-}
-
 SvXMLImportContext *ScXMLChangeCellContext::CreateChildContext( sal_uInt16 nPrefix,
                                      const OUString& rLocalName,
                                      const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList )
@@ -1200,10 +1151,6 @@ ScXMLPreviousContext::ScXMLPreviousContext(  ScXMLImport& rImport,
     }
 }
 
-ScXMLPreviousContext::~ScXMLPreviousContext()
-{
-}
-
 SvXMLImportContext *ScXMLPreviousContext::CreateChildContext( sal_uInt16 nPrefix,
                                      const OUString& rLocalName,
                                      const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList )
@@ -1273,10 +1220,6 @@ ScXMLContentChangeContext::ScXMLContentChangeContext(  ScXMLImport& rImport,
     pChangeTrackingImportHelper->SetRejectingNumber(nRejectingNumber);
 }
 
-ScXMLContentChangeContext::~ScXMLContentChangeContext()
-{
-}
-
 SvXMLImportContext *ScXMLContentChangeContext::CreateChildContext( sal_uInt16 nPrefix,
                                      const OUString& rLocalName,
                                      const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList )
@@ -1388,10 +1331,6 @@ ScXMLInsertionContext::ScXMLInsertionContext( ScXMLImport& rImport,
     pChangeTrackingImportHelper->SetPosition(nPosition, nCount, nTable);
 }
 
-ScXMLInsertionContext::~ScXMLInsertionContext()
-{
-}
-
 SvXMLImportContext *ScXMLInsertionContext::CreateChildContext( sal_uInt16 nPrefix,
                                      const OUString& rLocalName,
                                      const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList )
@@ -1455,10 +1394,6 @@ ScXMLInsertionCutOffContext::ScXMLInsertionCutOffContext( ScXMLImport& rImport,
     pChangeTrackingImportHelper->SetInsertionCutOff(nID, nPosition);
 }
 
-ScXMLInsertionCutOffContext::~ScXMLInsertionCutOffContext()
-{
-}
-
 SvXMLImportContext *ScXMLInsertionCutOffContext::CreateChildContext( sal_uInt16 nPrefix,
                                      const OUString& rLocalName,
                                      const css::uno::Reference<css::xml::sax::XAttributeList>& /* xAttrList */ )
@@ -1518,10 +1453,6 @@ ScXMLMovementCutOffContext::ScXMLMovementCutOffContext( ScXMLImport& rImport,
     pChangeTrackingImportHelper->AddMoveCutOff(nID, nStartPosition, nEndPosition);
 }
 
-ScXMLMovementCutOffContext::~ScXMLMovementCutOffContext()
-{
-}
-
 SvXMLImportContext *ScXMLMovementCutOffContext::CreateChildContext( sal_uInt16 nPrefix,
                                      const OUString& rLocalName,
                                      const css::uno::Reference<css::xml::sax::XAttributeList>& /* xAttrList */ )
@@ -1544,10 +1475,6 @@ ScXMLCutOffsContext::ScXMLCutOffsContext( ScXMLImport& rImport,
     // here are no attributes
 }
 
-ScXMLCutOffsContext::~ScXMLCutOffsContext()
-{
-}
-
 SvXMLImportContext *ScXMLCutOffsContext::CreateChildContext( sal_uInt16 nPrefix,
                                      const OUString& rLocalName,
                                      const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList )
@@ -1648,10 +1575,6 @@ ScXMLDeletionContext::ScXMLDeletionContext( ScXMLImport& rImport,
     pChangeTrackingImportHelper->SetMultiSpanned(static_cast<sal_Int16>(nMultiSpanned));
 }
 
-ScXMLDeletionContext::~ScXMLDeletionContext()
-{
-}
-
 SvXMLImportContext *ScXMLDeletionContext::CreateChildContext( sal_uInt16 nPrefix,
                                      const OUString& rLocalName,
                                      const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList )
@@ -1734,10 +1657,6 @@ ScXMLMovementContext::ScXMLMovementContext( ScXMLImport& rImport,
     pChangeTrackingImportHelper->SetRejectingNumber(nRejectingNumber);
 }
 
-ScXMLMovementContext::~ScXMLMovementContext()
-{
-}
-
 SvXMLImportContext *ScXMLMovementContext::CreateChildContext( sal_uInt16 nPrefix,
                                      const OUString& rLocalName,
                                      const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList )
@@ -1819,10 +1738,6 @@ ScXMLRejectionContext::ScXMLRejectionContext( ScXMLImport& rImport,
     pChangeTrackingImportHelper->SetRejectingNumber(nRejectingNumber);
 }
 
-ScXMLRejectionContext::~ScXMLRejectionContext()
-{
-}
-
 SvXMLImportContext *ScXMLRejectionContext::CreateChildContext( sal_uInt16 nPrefix,
                                      const OUString& rLocalName,
                                      const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList )
diff --git a/sc/source/filter/xml/xmlcvali.cxx b/sc/source/filter/xml/xmlcvali.cxx
index 8fdd9af..b736cec 100644
--- a/sc/source/filter/xml/xmlcvali.cxx
+++ b/sc/source/filter/xml/xmlcvali.cxx
@@ -62,8 +62,6 @@ public:
                         const OUString& rLName,
                         const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList);
 
-    virtual ~ScXMLContentValidationContext() override;
-
     virtual SvXMLImportContext *CreateChildContext( sal_uInt16 nPrefix,
                                      const OUString& rLocalName,
                                      const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList ) override;
@@ -91,8 +89,6 @@ public:
                         const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList,
                         ScXMLContentValidationContext* pValidationContext);
 
-    virtual ~ScXMLHelpMessageContext() override;
-
     virtual SvXMLImportContext *CreateChildContext( sal_uInt16 nPrefix,
                                      const OUString& rLocalName,
                                      const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList ) override;
@@ -117,8 +113,6 @@ public:
                         const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList,
                         ScXMLContentValidationContext* pValidationContext);
 
-    virtual ~ScXMLErrorMessageContext() override;
-
     virtual SvXMLImportContext *CreateChildContext( sal_uInt16 nPrefix,
                                      const OUString& rLocalName,
                                      const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList ) override;
@@ -139,8 +133,6 @@ public:
                         const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList,
                         ScXMLContentValidationContext* pValidationContext);
 
-    virtual ~ScXMLErrorMacroContext() override;
-
     virtual SvXMLImportContext *CreateChildContext( sal_uInt16 nPrefix,
                                      const OUString& rLocalName,
                                      const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList ) override;
@@ -244,10 +236,6 @@ ScXMLContentValidationContext::ScXMLContentValidationContext( ScXMLImport& rImpo
     }
 }
 
-ScXMLContentValidationContext::~ScXMLContentValidationContext()
-{
-}
-
 SvXMLImportContext *ScXMLContentValidationContext::CreateChildContext( sal_uInt16 nPrefix,
                                             const OUString& rLName,
                                             const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList )
@@ -487,10 +475,6 @@ ScXMLHelpMessageContext::ScXMLHelpMessageContext( ScXMLImport& rImport,
     }
 }
 
-ScXMLHelpMessageContext::~ScXMLHelpMessageContext()
-{
-}
-
 SvXMLImportContext *ScXMLHelpMessageContext::CreateChildContext( sal_uInt16 nPrefix,
                                             const OUString& rLName,
                                             const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList )
@@ -559,10 +543,6 @@ ScXMLErrorMessageContext::ScXMLErrorMessageContext( ScXMLImport& rImport,
     }
 }
 
-ScXMLErrorMessageContext::~ScXMLErrorMessageContext()
-{
-}
-
 SvXMLImportContext *ScXMLErrorMessageContext::CreateChildContext( sal_uInt16 nPrefix,
                                             const OUString& rLName,
                                             const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList )
@@ -625,10 +605,6 @@ ScXMLErrorMacroContext::ScXMLErrorMacroContext( ScXMLImport& rImport,
     }
 }
 
-ScXMLErrorMacroContext::~ScXMLErrorMacroContext()
-{
-}
-
 SvXMLImportContext *ScXMLErrorMacroContext::CreateChildContext( sal_uInt16 nPrefix,
                                             const OUString& rLName,
                                             const css::uno::Reference<css::xml::sax::XAttributeList>& /* xAttrList */ )
diff --git a/sc/source/filter/xml/xmlexprt.cxx b/sc/source/filter/xml/xmlexprt.cxx
index ece199c..bd705fb 100644
--- a/sc/source/filter/xml/xmlexprt.cxx
+++ b/sc/source/filter/xml/xmlexprt.cxx
@@ -306,16 +306,11 @@ class ScXMLShapeExport : public XMLShapeExport
 {
 public:
     explicit ScXMLShapeExport(SvXMLExport& rExp) : XMLShapeExport(rExp) {}
-    virtual ~ScXMLShapeExport() override;
 
     /** is called before a shape element for the given XShape is exported */
     virtual void onExport( const uno::Reference < drawing::XShape >& xShape ) override;
 };
 
-ScXMLShapeExport::~ScXMLShapeExport()
-{
-}
-
 void ScXMLShapeExport::onExport( const uno::Reference < drawing::XShape >& xShape )
 {
     uno::Reference< beans::XPropertySet > xShapeProp( xShape, uno::UNO_QUERY );
diff --git a/sc/source/filter/xml/xmlimprt.cxx b/sc/source/filter/xml/xmlimprt.cxx
index d74f871..6b8e31b 100644
--- a/sc/source/filter/xml/xmlimprt.cxx
+++ b/sc/source/filter/xml/xmlimprt.cxx
@@ -232,7 +232,6 @@ public:
         sal_uInt16 nPrfx,
         const OUString& rLName,
         const uno::Reference<xml::sax::XAttributeList>& xAttrList );
-    virtual ~ScXMLDocContext_Impl() override;
 
     virtual SvXMLImportContext *CreateChildContext( sal_uInt16 nPrefix,
         const OUString& rLocalName,
@@ -247,10 +246,6 @@ SvXMLImportContext( rImport, nPrfx, rLName )
 
 }
 
-ScXMLDocContext_Impl::~ScXMLDocContext_Impl()
-{
-}
-
 // context for flat file xml format
 class ScXMLFlatDocContext_Impl
     : public ScXMLDocContext_Impl, public SvXMLMetaDocumentContext
@@ -261,8 +256,6 @@ public:
         const uno::Reference<xml::sax::XAttributeList>& i_xAttrList,
         const uno::Reference<document::XDocumentProperties>& i_xDocProps);
 
-    virtual ~ScXMLFlatDocContext_Impl() override;
-
     virtual SvXMLImportContext *CreateChildContext(
         sal_uInt16 i_nPrefix, const OUString& i_rLocalName,
         const uno::Reference<xml::sax::XAttributeList>& i_xAttrList) override;
@@ -279,8 +272,6 @@ SvXMLMetaDocumentContext(i_rImport, i_nPrefix, i_rLName,
 {
 }
 
-ScXMLFlatDocContext_Impl::~ScXMLFlatDocContext_Impl() { }
-
 SvXMLImportContext *ScXMLFlatDocContext_Impl::CreateChildContext(
     sal_uInt16 i_nPrefix, const OUString& i_rLocalName,
     const uno::Reference<xml::sax::XAttributeList>& i_xAttrList)
@@ -302,7 +293,6 @@ public:
     ScXMLBodyContext_Impl( ScXMLImport& rImport, sal_uInt16 nPrfx,
         const OUString& rLName,
         const uno::Reference< xml::sax::XAttributeList > & xAttrList );
-    virtual ~ScXMLBodyContext_Impl() override;
 
     virtual SvXMLImportContext *CreateChildContext( sal_uInt16 nPrefix,
         const OUString& rLocalName,
@@ -316,10 +306,6 @@ ScXMLImportContext( rImport, nPrfx, rLName )
 {
 }
 
-ScXMLBodyContext_Impl::~ScXMLBodyContext_Impl()
-{
-}
-
 SvXMLImportContext *ScXMLBodyContext_Impl::CreateChildContext(
     sal_uInt16 /* nPrefix */,
     const OUString& rLocalName,
diff --git a/sc/source/filter/xml/xmlstyli.cxx b/sc/source/filter/xml/xmlstyli.cxx
index d0f8a43..b6f4d63 100644
--- a/sc/source/filter/xml/xmlstyli.cxx
+++ b/sc/source/filter/xml/xmlstyli.cxx
@@ -355,7 +355,6 @@ public:
             SvXMLImport& rImport, sal_uInt16 nPrfx,
             const OUString& rLName,
             const uno::Reference< xml::sax::XAttributeList > & xAttrList );
-    virtual ~ScXMLMapContext() override;
 
     ScCondFormatEntry* CreateConditionEntry();
 };
@@ -416,10 +415,6 @@ ScCondFormatEntry* ScXMLMapContext::CreateConditionEntry()
     return pEntry;
 }
 
-ScXMLMapContext::~ScXMLMapContext()
-{
-}
-
 void XMLTableStyleContext::SetAttribute( sal_uInt16 nPrefixKey,
                                         const OUString& rLocalName,
                                         const OUString& rValue )
diff --git a/sc/source/ui/Accessibility/AccessibleDocumentPagePreview.cxx b/sc/source/ui/Accessibility/AccessibleDocumentPagePreview.cxx
index 05108da..31c4930 100644
--- a/sc/source/ui/Accessibility/AccessibleDocumentPagePreview.cxx
+++ b/sc/source/ui/Accessibility/AccessibleDocumentPagePreview.cxx
@@ -482,7 +482,6 @@ public:
     ScIAccessibleViewForwarder(ScPreviewShell* pViewShell,
                                 ScAccessibleDocumentPagePreview* pAccDoc,
                                 const MapMode& aMapMode);
-    virtual ~ScIAccessibleViewForwarder() override;
 
     ///=====  IAccessibleViewForwarder  ========================================
 
@@ -510,10 +509,6 @@ ScIAccessibleViewForwarder::ScIAccessibleViewForwarder(ScPreviewShell* pViewShel
 {
 }
 
-ScIAccessibleViewForwarder::~ScIAccessibleViewForwarder()
-{
-}
-
 ///=====  IAccessibleViewForwarder  ========================================
 
 Rectangle ScIAccessibleViewForwarder::GetVisibleArea() const
diff --git a/sc/source/ui/Accessibility/AccessibleText.cxx b/sc/source/ui/Accessibility/AccessibleText.cxx
index 63ca5b0..1323dd1 100644
--- a/sc/source/ui/Accessibility/AccessibleText.cxx
+++ b/sc/source/ui/Accessibility/AccessibleText.cxx
@@ -52,7 +52,6 @@ class ScViewForwarder : public SvxViewForwarder
     ScSplitPos          meSplitPos;
 public:
                         ScViewForwarder(ScTabViewShell* pViewShell, ScSplitPos eSplitPos, const ScAddress& rCell);
-    virtual             ~ScViewForwarder() override;
 
     virtual bool        IsValid() const override;
     virtual Rectangle   GetVisArea() const override;
@@ -70,10 +69,6 @@ ScViewForwarder::ScViewForwarder(ScTabViewShell* pViewShell, ScSplitPos eSplitPo
 {
 }
 
-ScViewForwarder::~ScViewForwarder()
-{
-}
-
 bool ScViewForwarder::IsValid() const
 {
     return mpViewShell != nullptr;
@@ -150,7 +145,6 @@ class ScEditObjectViewForwarder : public SvxViewForwarder
 public:
                         ScEditObjectViewForwarder( vcl::Window* pWindow,
                                                    const EditView* _pEditView);
-    virtual             ~ScEditObjectViewForwarder() override;
 
     virtual bool        IsValid() const override;
     virtual Rectangle   GetVisArea() const override;
@@ -168,10 +162,6 @@ ScEditObjectViewForwarder::ScEditObjectViewForwarder( vcl::Window* pWindow,
 {
 }
 
-ScEditObjectViewForwarder::~ScEditObjectViewForwarder()
-{
-}
-
 bool ScEditObjectViewForwarder::IsValid() const
 {
     return (mpWindow != nullptr);
@@ -248,7 +238,6 @@ protected:
     ScPreviewShell*     mpViewShell;
 public:
     explicit            ScPreviewViewForwarder(ScPreviewShell* pViewShell);
-    virtual             ~ScPreviewViewForwarder() override;
 
     virtual bool        IsValid() const override;
     virtual Rectangle   GetVisArea() const override;
@@ -268,10 +257,6 @@ ScPreviewViewForwarder::ScPreviewViewForwarder(ScPreviewShell* pViewShell)
 {
 }
 
-ScPreviewViewForwarder::~ScPreviewViewForwarder()
-{
-}
-
 bool ScPreviewViewForwarder::IsValid() const
 {
     return mpViewShell != nullptr;
@@ -376,7 +361,6 @@ class ScPreviewHeaderFooterViewForwarder : public ScPreviewViewForwarder
     bool            mbHeader;
 public:
                         ScPreviewHeaderFooterViewForwarder(ScPreviewShell* pViewShell, bool bHeader);
-    virtual             ~ScPreviewHeaderFooterViewForwarder() override;
 
     virtual Rectangle   GetVisArea() const override;
 };
@@ -388,10 +372,6 @@ ScPreviewHeaderFooterViewForwarder::ScPreviewHeaderFooterViewForwarder(ScPreview
 {
 }
 
-ScPreviewHeaderFooterViewForwarder::~ScPreviewHeaderFooterViewForwarder()
-{
-}
-
 Rectangle ScPreviewHeaderFooterViewForwarder::GetVisArea() const
 {
     Rectangle aVisArea;
@@ -418,7 +398,6 @@ class ScPreviewCellViewForwarder : public ScPreviewViewForwarder
 public:
                         ScPreviewCellViewForwarder(ScPreviewShell* pViewShell,
                             ScAddress aCellPos);
-    virtual             ~ScPreviewCellViewForwarder() override;
 
     virtual Rectangle   GetVisArea() const override;
 };
@@ -431,10 +410,6 @@ ScPreviewCellViewForwarder::ScPreviewCellViewForwarder(ScPreviewShell* pViewShel
 {
 }
 
-ScPreviewCellViewForwarder::~ScPreviewCellViewForwarder()
-{
-}
-
 Rectangle ScPreviewCellViewForwarder::GetVisArea() const
 {
     Rectangle aVisArea;
@@ -460,7 +435,6 @@ public:
                         ScPreviewHeaderCellViewForwarder(ScPreviewShell* pViewShell,
                             ScAddress aCellPos,
                             bool bColHeader);
-    virtual             ~ScPreviewHeaderCellViewForwarder() override;
 
     virtual Rectangle   GetVisArea() const override;
 };
@@ -475,10 +449,6 @@ ScPreviewHeaderCellViewForwarder::ScPreviewHeaderCellViewForwarder(ScPreviewShel
 {
 }
 
-ScPreviewHeaderCellViewForwarder::~ScPreviewHeaderCellViewForwarder()
-{
-}
-
 Rectangle ScPreviewHeaderCellViewForwarder::GetVisArea() const
 {
     Rectangle aVisArea;
@@ -504,7 +474,6 @@ public:
                         ScPreviewNoteViewForwarder(ScPreviewShell* pViewShell,
                             ScAddress aCellPos,
                             bool bNoteMark);
-    virtual             ~ScPreviewNoteViewForwarder() override;
 
     virtual Rectangle   GetVisArea() const override;
 };
@@ -519,10 +488,6 @@ ScPreviewNoteViewForwarder::ScPreviewNoteViewForwarder(ScPreviewShell* pViewShel
 {
 }
 
-ScPreviewNoteViewForwarder::~ScPreviewNoteViewForwarder()
-{
-}
-
 Rectangle ScPreviewNoteViewForwarder::GetVisArea() const
 {
     Rectangle aVisArea;
@@ -546,7 +511,6 @@ class ScEditViewForwarder : public SvxEditViewForwarder
     VclPtr<vcl::Window> mpWindow;
 public:
                         ScEditViewForwarder(EditView* pEditView, vcl::Window* pWin);
-    virtual             ~ScEditViewForwarder() override;
 
     virtual bool        IsValid() const override;
     virtual Rectangle   GetVisArea() const override;
@@ -567,10 +531,6 @@ ScEditViewForwarder::ScEditViewForwarder(EditView* pEditView, vcl::Window* pWin)
 {
 }
 
-ScEditViewForwarder::~ScEditViewForwarder()
-{
-}
-
 bool ScEditViewForwarder::IsValid() const
 {
     return mpWindow && mpEditView;
diff --git a/sc/source/ui/vba/vbaeventshelper.cxx b/sc/source/ui/vba/vbaeventshelper.cxx
index 67fbf64..a1ff3a5 100644
--- a/sc/source/ui/vba/vbaeventshelper.cxx
+++ b/sc/source/ui/vba/vbaeventshelper.cxx
@@ -116,7 +116,6 @@ class ScVbaEventListener : public ::cppu::WeakImplHelper< awt::XTopWindowListene
 {
 public:
     ScVbaEventListener( ScVbaEventsHelper& rVbaEvents, const uno::Reference< frame::XModel >& rxModel, ScDocShell* pDocShell );
-    virtual ~ScVbaEventListener() override;
 
     /** Starts listening to the passed document controller. */
     void startControllerListening( const uno::Reference< frame::XController >& rxController );
@@ -201,10 +200,6 @@ ScVbaEventListener::ScVbaEventListener( ScVbaEventsHelper& rVbaEvents, const uno
     }
 }
 
-ScVbaEventListener::~ScVbaEventListener()
-{
-}
-
 void ScVbaEventListener::startControllerListening( const uno::Reference< frame::XController >& rxController )
 {
     ::osl::MutexGuard aGuard( maMutex );
diff --git a/sc/source/ui/vba/vbahyperlinks.cxx b/sc/source/ui/vba/vbahyperlinks.cxx
index b64a09e..3a3609e 100644
--- a/sc/source/ui/vba/vbahyperlinks.cxx
+++ b/sc/source/ui/vba/vbahyperlinks.cxx
@@ -106,7 +106,6 @@ class ScVbaHlinkContainer : public ::cppu::WeakImplHelper< container::XIndexAcce
 public:
     explicit ScVbaHlinkContainer() throw (uno::RuntimeException);
     explicit ScVbaHlinkContainer( const ScVbaHlinkContainerRef& rxSheetContainer, const ScRangeList& rScRanges ) throw (uno::RuntimeException);
-    virtual ~ScVbaHlinkContainer() override;
 
     /** Inserts the passed hyperlink into the collection. Will remove a
         Hyperlink object with the same anchor as the passed Hyperlink object. */
@@ -142,10 +141,6 @@ ScVbaHlinkContainer::ScVbaHlinkContainer( const ScVbaHlinkContainerRef& rxSheetC
     }
 }
 
-ScVbaHlinkContainer::~ScVbaHlinkContainer()
-{
-}
-
 void ScVbaHlinkContainer::insertHyperlink( const uno::Reference< excel::XHyperlink >& rxHlink ) throw (uno::RuntimeException)
 {
     HyperlinkVector::iterator aIt = ::std::find_if( maHlinks.begin(), maHlinks.end(), EqualAnchorFunctor( rxHlink ) );
commit 2e85ce9692b8331721f4656b24e41b2673178fc7
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Mon Dec 5 09:01:01 2016 +0100

    loplugin:unnecessaryoverride (dtors) in sccomp
    
    Change-Id: Ibfd17710adb0d8cea5046fdf13ca665e7aa549b7

diff --git a/sccomp/source/solver/CoinMPSolver.cxx b/sccomp/source/solver/CoinMPSolver.cxx
index 348bcf7..189a6f9 100644
--- a/sccomp/source/solver/CoinMPSolver.cxx
+++ b/sccomp/source/solver/CoinMPSolver.cxx
@@ -37,7 +37,6 @@ class CoinMPSolver : public SolverComponent
 {
 public:
     CoinMPSolver() {}
-    virtual ~CoinMPSolver() override {}
 
 private:
     virtual void SAL_CALL solve() throw(css::uno::RuntimeException, std::exception) override;
diff --git a/sccomp/source/solver/LpsolveSolver.cxx b/sccomp/source/solver/LpsolveSolver.cxx
index b07691e..c605bc1 100644
--- a/sccomp/source/solver/LpsolveSolver.cxx
+++ b/sccomp/source/solver/LpsolveSolver.cxx
@@ -68,7 +68,6 @@ class LpsolveSolver : public SolverComponent
 {
 public:
     LpsolveSolver() {}
-    virtual ~LpsolveSolver() override {}
 
 private:
     virtual void SAL_CALL solve() throw(css::uno::RuntimeException, std::exception) override;
commit 84bbf2de22c6c488128ac42931f0ee1c2968e1b8
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Mon Dec 5 09:00:48 2016 +0100

    loplugin:unnecessaryoverride (dtors) in scripting
    
    Change-Id: I59abb019929e321f9955e57da68417bd137f1530

diff --git a/scripting/source/provider/BrowseNodeFactoryImpl.cxx b/scripting/source/provider/BrowseNodeFactoryImpl.cxx
index 6b8d128..1fb72be 100644
--- a/scripting/source/provider/BrowseNodeFactoryImpl.cxx
+++ b/scripting/source/provider/BrowseNodeFactoryImpl.cxx
@@ -66,10 +66,6 @@ public:
         m_Nodes[ 0 ] = node;
     }
 
-    virtual ~BrowseNodeAggregator() override
-    {
-    }
-
     void addBrowseNode( const Reference< browse::XBrowseNode>& node )
     {
         m_Nodes.push_back( node );
@@ -531,10 +527,6 @@ public:
         m_Name = "Root";
     }
 
-    virtual ~DefaultRootBrowseNode() override
-    {
-    }
-
     virtual Sequence< Reference< browse::XBrowseNode > > SAL_CALL
                 getChildNodes()
     throw ( RuntimeException, std::exception ) override
@@ -589,10 +581,6 @@ public:
     {
     }
 
-    virtual ~SelectorBrowseNode() override
-    {
-    }
-
     virtual OUString SAL_CALL getName()
         throw ( RuntimeException, std::exception ) override
     {
commit 542bb6b7876f7a5aef4e27f054fba39448b111b5
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Mon Dec 5 09:00:32 2016 +0100

    loplugin:unnecessaryoverride (dtors) in sd
    
    Change-Id: Ibe339042a523f7c55fbcea68756524fc168e8558

diff --git a/sd/source/filter/grf/sdgrffilter.cxx b/sd/source/filter/grf/sdgrffilter.cxx
index 6f53645..806e6b9 100644
--- a/sd/source/filter/grf/sdgrffilter.cxx
+++ b/sd/source/filter/grf/sdgrffilter.cxx
@@ -95,18 +95,12 @@ class SdGRFFilter_ImplInteractionHdl : public ::cppu::WeakImplHelper< css::task:
         nFilterError( GRFILTER_OK )
         {}
 
-    virtual ~SdGRFFilter_ImplInteractionHdl() override;
-
     sal_uInt16 GetErrorCode() const { return nFilterError; };
 
     virtual void SAL_CALL   handle( const css::uno::Reference< css::task::XInteractionRequest >& )
                                 throw( css::uno::RuntimeException, std::exception ) override;
 };
 
-SdGRFFilter_ImplInteractionHdl::~SdGRFFilter_ImplInteractionHdl()
-{
-}
-

... etc. - the rest is truncated


More information about the Libreoffice-commits mailing list