diff options
author | Noel Grandin <noel.grandin@collabora.co.uk> | 2019-07-18 11:02:49 +0200 |
---|---|---|
committer | Noel Grandin <noel.grandin@collabora.co.uk> | 2019-07-19 09:06:25 +0200 |
commit | cc3d75e14c840ed7c026fcdba5ca027ba516940a (patch) | |
tree | aad38ca5892599a0d755ca186bdbf3d40db0f81e /compilerplugins | |
parent | 8a08eaedfb2c9a6c002220a61c5b1f8ce1130f54 (diff) |
make cppunitassertequals a shared plugin
Change-Id: Ied9c26248cb72f2146fbe1a985f825f7525fa17c
Reviewed-on: https://gerrit.libreoffice.org/75836
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'compilerplugins')
-rw-r--r-- | compilerplugins/clang/cppunitassertequals.cxx | 18 | ||||
-rw-r--r-- | compilerplugins/clang/sharedvisitor/sharedvisitor.cxx | 15 |
2 files changed, 28 insertions, 5 deletions
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; |