[Libreoffice-commits] core.git: 2 commits - compilerplugins/clang solenv/clang-format

Noel Grandin (via logerrit) logerrit at kemper.freedesktop.org
Wed Jul 17 07:57:17 UTC 2019


 compilerplugins/clang/overridevirtual.cxx             |   28 ++++++++++--------
 compilerplugins/clang/sharedvisitor/sharedvisitor.cxx |   15 +++++++++
 solenv/clang-format/blacklist                         |    2 -
 3 files changed, 33 insertions(+), 12 deletions(-)

New commits:
commit 8e3f4317823aa83e0ad9e7dc008a1550ef3c9798
Author:     Noel Grandin <noel.grandin at collabora.co.uk>
AuthorDate: Tue Jul 16 14:54:14 2019 +0200
Commit:     Noel Grandin <noel.grandin at collabora.co.uk>
CommitDate: Wed Jul 17 09:56:25 2019 +0200

    make overrridevirtual a shared plugin
    
    Change-Id: Ied3b772bdd54cb0e8d6214e7a51866364523b83b
    Reviewed-on: https://gerrit.libreoffice.org/75742
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <noel.grandin at collabora.co.uk>

diff --git a/compilerplugins/clang/overridevirtual.cxx b/compilerplugins/clang/overridevirtual.cxx
index 9b31035d2156..8dd29ab0e426 100644
--- a/compilerplugins/clang/overridevirtual.cxx
+++ b/compilerplugins/clang/overridevirtual.cxx
@@ -6,6 +6,7 @@
  * 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 LO_CLANG_SHARED_PLUGINS
 
 #include <algorithm>
 #include <cassert>
@@ -26,6 +27,7 @@ public:
     explicit OverrideVirtual(loplugin::InstantiationData const & data):
         FilteringRewritePlugin(data) {}
 
+    virtual bool preRun() override;
     virtual void run() override;
 
     bool VisitCXXMethodDecl(CXXMethodDecl const * decl);
@@ -34,13 +36,15 @@ private:
     std::set<SourceLocation> insertions_;
 };
 
-void OverrideVirtual::run() {
-    if (compiler.getLangOpts().CPlusPlus
+bool OverrideVirtual::preRun() {
+    return compiler.getLangOpts().CPlusPlus
         && compiler.getPreprocessor().getIdentifierInfo(
-            "LIBO_INTERNAL_ONLY")->hasMacroDefinition())
-    {
+            "LIBO_INTERNAL_ONLY")->hasMacroDefinition();
+}
+
+void OverrideVirtual::run() {
+    if (preRun())
         TraverseDecl(compiler.getASTContext().getTranslationUnitDecl());
-    }
 }
 bool OverrideVirtual::VisitCXXMethodDecl(CXXMethodDecl const * decl) {
     // As a heuristic, ignore declarations where the name is spelled out in an
@@ -161,8 +165,10 @@ bool OverrideVirtual::VisitCXXMethodDecl(CXXMethodDecl const * decl) {
     return true;
 }
 
-loplugin::Plugin::Registration<OverrideVirtual> X("overridevirtual", true);
+loplugin::Plugin::Registration<OverrideVirtual> overridevirtual("overridevirtual");
 
-}
+} // namespace
+
+#endif // LO_CLANG_SHARED_PLUGINS
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/compilerplugins/clang/sharedvisitor/sharedvisitor.cxx b/compilerplugins/clang/sharedvisitor/sharedvisitor.cxx
index ed07569f5431..f3fe66c98fa2 100644
--- a/compilerplugins/clang/sharedvisitor/sharedvisitor.cxx
+++ b/compilerplugins/clang/sharedvisitor/sharedvisitor.cxx
@@ -25,6 +25,7 @@
 #include "../inlinevisible.cxx"
 #include "../loopvartoosmall.cxx"
 #include "../overrideparam.cxx"
+#include "../overridevirtual.cxx"
 #include "../pointerbool.cxx"
 #include "../privatebase.cxx"
 #include "../rangedforcopy.cxx"
@@ -82,6 +83,7 @@ public:
         , inlineVisible( nullptr )
         , loopVarTooSmall( nullptr )
         , overrideParam( nullptr )
+        , overrideVirtual( nullptr )
         , pointerBool( nullptr )
         , privateBase( nullptr )
         , rangedForCopy( nullptr )
@@ -140,6 +142,8 @@ public:
             loopVarTooSmall = nullptr;
         if( overrideParam && !overrideParam->preRun())
             overrideParam = nullptr;
+        if( overrideVirtual && !overrideVirtual->preRun())
+            overrideVirtual = nullptr;
         if( pointerBool && !pointerBool->preRun())
             pointerBool = nullptr;
         if( privateBase && !privateBase->preRun())
@@ -226,6 +230,8 @@ public:
             loopVarTooSmall->postRun();
         if( overrideParam )
             overrideParam->postRun();
+        if( overrideVirtual )
+            overrideVirtual->postRun();
         if( pointerBool )
             pointerBool->postRun();
         if( privateBase )
@@ -318,6 +324,8 @@ public:
             loopVarTooSmall = static_cast< LoopVarTooSmall* >( plugin );
         else if( strcmp( name, "overrideparam" ) == 0 )
             overrideParam = static_cast< OverrideParam* >( plugin );
+        else if( strcmp( name, "overridevirtual" ) == 0 )
+            overrideVirtual = static_cast< OverrideVirtual* >( plugin );
         else if( strcmp( name, "pointerbool" ) == 0 )
             pointerBool = static_cast< PointerBool* >( plugin );
         else if( strcmp( name, "privatebase" ) == 0 )
@@ -549,6 +557,11 @@ public:
             if( !overrideParam->VisitCXXMethodDecl( arg ))
                 overrideParam = nullptr;
         }
+        if( overrideVirtual != nullptr )
+        {
+            if( !overrideVirtual->VisitCXXMethodDecl( arg ))
+                overrideVirtual = nullptr;
+        }
         if( typedefParam != nullptr )
         {
             if( !typedefParam->VisitCXXMethodDecl( arg ))
@@ -1130,6 +1143,7 @@ private:
             || inlineVisible != nullptr
             || loopVarTooSmall != nullptr
             || overrideParam != nullptr
+            || overrideVirtual != nullptr
             || pointerBool != nullptr
             || privateBase != nullptr
             || rangedForCopy != nullptr
@@ -1172,6 +1186,7 @@ private:
     InlineVisible* inlineVisible;
     LoopVarTooSmall* loopVarTooSmall;
     OverrideParam* overrideParam;
+    OverrideVirtual* overrideVirtual;
     PointerBool* pointerBool;
     PrivateBase* privateBase;
     RangedForCopy* rangedForCopy;
commit e557bd4eb73ecee802c724c7f7f16ad8b3793bed
Author:     Noel Grandin <noel.grandin at collabora.co.uk>
AuthorDate: Tue Jul 16 14:39:20 2019 +0200
Commit:     Noel Grandin <noel.grandin at collabora.co.uk>
CommitDate: Wed Jul 17 09:56:16 2019 +0200

    rename override plugin
    
    in preparation for using it in the shared plugin infrastructure, which
    needs the name of the Registration variable to match the name of the
    plugin, which doesn't work when the plugin is named the same as a
    keyword
    
    Change-Id: I40a3dc1902f2fa1efe76b5e472cd03f4b480ff34
    Reviewed-on: https://gerrit.libreoffice.org/75741
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <noel.grandin at collabora.co.uk>

diff --git a/compilerplugins/clang/override.cxx b/compilerplugins/clang/overridevirtual.cxx
similarity index 94%
rename from compilerplugins/clang/override.cxx
rename to compilerplugins/clang/overridevirtual.cxx
index bd63792c3e28..9b31035d2156 100644
--- a/compilerplugins/clang/override.cxx
+++ b/compilerplugins/clang/overridevirtual.cxx
@@ -19,11 +19,11 @@
 
 namespace {
 
-class Override:
-    public loplugin::FilteringRewritePlugin<Override>
+class OverrideVirtual:
+    public loplugin::FilteringRewritePlugin<OverrideVirtual>
 {
 public:
-    explicit Override(loplugin::InstantiationData const & data):
+    explicit OverrideVirtual(loplugin::InstantiationData const & data):
         FilteringRewritePlugin(data) {}
 
     virtual void run() override;
@@ -34,7 +34,7 @@ private:
     std::set<SourceLocation> insertions_;
 };
 
-void Override::run() {
+void OverrideVirtual::run() {
     if (compiler.getLangOpts().CPlusPlus
         && compiler.getPreprocessor().getIdentifierInfo(
             "LIBO_INTERNAL_ONLY")->hasMacroDefinition())
@@ -42,7 +42,7 @@ void Override::run() {
         TraverseDecl(compiler.getASTContext().getTranslationUnitDecl());
     }
 }
-bool Override::VisitCXXMethodDecl(CXXMethodDecl const * decl) {
+bool OverrideVirtual::VisitCXXMethodDecl(CXXMethodDecl const * decl) {
     // As a heuristic, ignore declarations where the name is spelled out in an
     // ignored location; that e.g. handles uses of the Q_OBJECT macro from
     // external QtCore/qobjectdefs.h:
@@ -161,7 +161,7 @@ bool Override::VisitCXXMethodDecl(CXXMethodDecl const * decl) {
     return true;
 }
 
-loplugin::Plugin::Registration<Override> X("override", true);
+loplugin::Plugin::Registration<OverrideVirtual> X("overridevirtual", true);
 
 }
 
diff --git a/solenv/clang-format/blacklist b/solenv/clang-format/blacklist
index a069e3b1208f..4c2b3be8e9d1 100644
--- a/solenv/clang-format/blacklist
+++ b/solenv/clang-format/blacklist
@@ -1702,8 +1702,8 @@ compilerplugins/clang/mergeclasses.cxx
 compilerplugins/clang/nullptr.cxx
 compilerplugins/clang/oncevar.cxx
 compilerplugins/clang/oslendian.cxx
-compilerplugins/clang/override.cxx
 compilerplugins/clang/overrideparam.cxx
+compilerplugins/clang/overridevirtual.cxx
 compilerplugins/clang/passparamsbyref.cxx
 compilerplugins/clang/passstuffbyref.cxx
 compilerplugins/clang/plugin.cxx


More information about the Libreoffice-commits mailing list