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

Noel Grandin (via logerrit) logerrit at kemper.freedesktop.org
Fri Jul 19 07:07:14 UTC 2019


 compilerplugins/clang/cppunitassertequals.cxx         |   18 +++++++++++++-----
 compilerplugins/clang/sharedvisitor/sharedvisitor.cxx |   15 +++++++++++++++
 2 files changed, 28 insertions(+), 5 deletions(-)

New commits:
commit cc3d75e14c840ed7c026fcdba5ca027ba516940a
Author:     Noel Grandin <noel.grandin at collabora.co.uk>
AuthorDate: Thu Jul 18 11:02:49 2019 +0200
Commit:     Noel Grandin <noel.grandin at collabora.co.uk>
CommitDate: Fri Jul 19 09:06:25 2019 +0200

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

diff --git a/compilerplugins/clang/cppunitassertequals.cxx b/compilerplugins/clang/cppunitassertequals.cxx
index 135a7e5c829a..930ecdd74e13 100644
--- a/compilerplugins/clang/cppunitassertequals.cxx
+++ b/compilerplugins/clang/cppunitassertequals.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 "plugin.hxx"
 #include "check.hxx"
@@ -27,9 +28,14 @@ public:
     explicit CppunitAssertEquals(loplugin::InstantiationData const & data):
         FilteringPlugin(data) {}
 
+    virtual bool preRun() override
+    {
+        return compiler.getLangOpts().CPlusPlus;
+    }
+
     virtual void run() override
     {
-        if (compiler.getLangOpts().CPlusPlus) {
+        if (preRun()) {
             TraverseDecl(compiler.getASTContext().getTranslationUnitDecl());
         }
     }
@@ -129,7 +135,7 @@ bool CppunitAssertEquals::VisitCallExpr(const CallExpr* callExpr)
 }
 
 // copied from stringconcat.cxx
-Expr const * stripCtor(Expr const * expr) {
+Expr const * stripConstructor(Expr const * expr) {
     auto e0 = expr;
     auto const e1 = dyn_cast<CXXFunctionalCastExpr>(e0);
     if (e1 != nullptr) {
@@ -164,7 +170,7 @@ bool CppunitAssertEquals::isCompileTimeConstant(Expr const * expr)
         return true;
     // is string literal ?
     expr = expr->IgnoreParenImpCasts();
-    expr = stripCtor(expr);
+    expr = stripConstructor(expr);
     return isa<clang::StringLiteral>(expr);
 }
 
@@ -220,8 +226,10 @@ void CppunitAssertEquals::reportEquals(
         << (name == "CPPUNIT_ASSERT_MESSAGE") << negative << range;
 }
 
-loplugin::Plugin::Registration< CppunitAssertEquals > X("cppunitassertequals");
+loplugin::Plugin::Registration< CppunitAssertEquals > cppunitassertequals("cppunitassertequals");
 
-}
+} // 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 1552f2661f32..0b95aeb711f0 100644
--- a/compilerplugins/clang/sharedvisitor/sharedvisitor.cxx
+++ b/compilerplugins/clang/sharedvisitor/sharedvisitor.cxx
@@ -14,6 +14,7 @@
 #include "../badstatics.cxx"
 #include "../blockblock.cxx"
 #include "../charrightshift.cxx"
+#include "../cppunitassertequals.cxx"
 #include "../data.cxx"
 #include "../datamembershadow.cxx"
 #include "../dbgunhandledexception.cxx"
@@ -84,6 +85,7 @@ public:
         , badStatics( nullptr )
         , blockBlock( nullptr )
         , charRightShift( nullptr )
+        , cppunitAssertEquals( nullptr )
         , data( nullptr )
         , dataMemberShadow( nullptr )
         , dbgUnhandledException( nullptr )
@@ -143,6 +145,8 @@ public:
             blockBlock = nullptr;
         if( charRightShift && !charRightShift->preRun())
             charRightShift = nullptr;
+        if( cppunitAssertEquals && !cppunitAssertEquals->preRun())
+            cppunitAssertEquals = nullptr;
         if( data && !data->preRun())
             data = nullptr;
         if( dataMemberShadow && !dataMemberShadow->preRun())
@@ -253,6 +257,8 @@ public:
             blockBlock->postRun();
         if( charRightShift )
             charRightShift->postRun();
+        if( cppunitAssertEquals )
+            cppunitAssertEquals->postRun();
         if( data )
             data->postRun();
         if( dataMemberShadow )
@@ -369,6 +375,8 @@ public:
             blockBlock = static_cast< BlockBlock* >( plugin );
         else if( strcmp( name, "charrightshift" ) == 0 )
             charRightShift = static_cast< CharRightShift* >( plugin );
+        else if( strcmp( name, "cppunitassertequals" ) == 0 )
+            cppunitAssertEquals = static_cast< CppunitAssertEquals* >( plugin );
         else if( strcmp( name, "data" ) == 0 )
             data = static_cast< Data* >( plugin );
         else if( strcmp( name, "datamembershadow" ) == 0 )
@@ -773,6 +781,11 @@ public:
     {
         if( ignoreLocation( arg ))
             return true;
+        if( cppunitAssertEquals != nullptr )
+        {
+            if( !cppunitAssertEquals->VisitCallExpr( arg ))
+                cppunitAssertEquals = nullptr;
+        }
         if( dbgUnhandledException != nullptr )
         {
             if( !dbgUnhandledException->VisitCallExpr( arg ))
@@ -1425,6 +1438,7 @@ private:
         return badStatics != nullptr
             || blockBlock != nullptr
             || charRightShift != nullptr
+            || cppunitAssertEquals != nullptr
             || data != nullptr
             || dataMemberShadow != nullptr
             || dbgUnhandledException != nullptr
@@ -1479,6 +1493,7 @@ private:
     BadStatics* badStatics;
     BlockBlock* blockBlock;
     CharRightShift* charRightShift;
+    CppunitAssertEquals* cppunitAssertEquals;
     Data* data;
     DataMemberShadow* dataMemberShadow;
     DbgUnhandledException* dbgUnhandledException;


More information about the Libreoffice-commits mailing list